perm filename TEX.PSC[TEX,DEK]1 blob sn#687893 filedate 1982-12-02 generic text, type T, neo UTF8
{4}{9}{$C-,A+,D-,W+}{[$C+,D:5,W+]}{$D:7}PROGRAM TEX;LABEL{6}1,9998,9999;
CONST{11}MEMMAX=61000;BUFSIZE=500;ERRORLINE=80;HALFERRORLIN=50;
MAXPRINTLINE=80;STACKSIZE=80;MAXINOPEN=6;FONTMAX=100;FONTMEMSIZE=25000;
PARAMSIZE=30;NESTSIZE=40;MAXSTRINGS=3000;STRINGVACANC=8000;
POOLSIZE=31000;SAVESIZE=300;TRIESIZE=6000;DVIBUFSIZE=800;
FILENAMESIZE=23;POOLNAME='TEX.POOL[TEX,SYS]      ';
COUNTNAME='<TEX!>.TXT[TEX,SYS]    ';CHECKDELAY=10;WRITEDELAY=12;
TYPE{18}ASCIICODE=0..127;{25}EIGHTBITS=0..255;
ALPHAFILE=PACKED FILE OF CHAR;BYTEFILE=PACKED FILE OF EIGHTBITS;
{38}POOLPOINTER=0..POOLSIZE;STRNUMBER=0..MAXSTRINGS;{98}SCALED=INTEGER;
NONNEGATIVEI=0..2147483647;SMALLNUMBER=0..63;{106}GLUERATIO=REAL;
{110}QUARTERWORD=0..511;HALFWORD=0..262143;TWOCHOICES=1..2;
FOURCHOICES=1..4;TWOHALVES=PACKED RECORD RH:HALFWORD;
CASE TWOCHOICES OF 1:(LH:HALFWORD);2:(B0:QUARTERWORD;B1:QUARTERWORD);
END;FOURQUARTERS=PACKED RECORD B0:QUARTERWORD;B1:QUARTERWORD;
B2:QUARTERWORD;B3:QUARTERWORD;END;
MEMORYWORD=PACKED RECORD CASE FOURCHOICES OF 1:(INT:INTEGER);
2:(GR:GLUERATIO);3:(HH:TWOHALVES);4:(QQQQ:FOURQUARTERS);END;
WORDFILE=FILE OF MEMORYWORD;{146}GLUEORD=0..3;
{208}LISTSTATEREC=RECORD MODEFIELD:-187..187;
HEADFIELD,TAILFIELD:HALFWORD;ALREADYFIELD,AUXFIELD,MLFIELD:INTEGER;END;
{254}GROUPCODE=0..14;
{282}INSTATERECOR=RECORD STATEFIELD,INDEXFIELD:QUARTERWORD;
STARTFIELD,LOCFIELD,LIMITFIELD,NAMEFIELD:HALFWORD;END;
{506}INTERNALFONT=0..FONTMAX;{550}DVIINDEX=0..DVIBUFSIZE;
PACKEDBYTES=PACKED ARRAY[DVIINDEX]OF EIGHTBITS;
{860}TRIEPOINTER=0..TRIESIZE;{865}HYPHPOINTER=0..307;VAR{13}BAD:INTEGER;
{20}XORD:ARRAY[CHAR]OF ASCIICODE;XCHR:ARRAY[ASCIICODE]OF CHAR;
{26}NAMEOFFILE:PACKED ARRAY[1..FILENAMESIZE]OF CHAR;
NAMELENGTH:0..FILENAMESIZE;{30}BUFFER:ARRAY[0..BUFSIZE]OF ASCIICODE;
FIRST:0..BUFSIZE;LAST:0..BUFSIZE;MAXBUFSTACK:0..BUFSIZE;
AUXBUF:ARRAY[0..70]OF CHAR;{32}TERMIN:ALPHAFILE;TERMOUT:ALPHAFILE;
{39}STRPOOL:PACKED ARRAY[POOLPOINTER]OF ASCIICODE;
STRSTART:ARRAY[STRNUMBER]OF POOLPOINTER;POOLPTR:POOLPOINTER;
STRPTR:STRNUMBER;{50}{POOLFILE:ALPHAFILE;}{54}LOGFILE:ALPHAFILE;
SELECTOR:0..21;DIG:ARRAY[0..22]OF 0..9;TALLY:INTEGER;
TERMOFFSET:0..MAXPRINTLINE;FILEOFFSET:0..MAXPRINTLINE;
TRICKBUF:ARRAY[0..ERRORLINE]OF ASCIICODE;TRICKCOUNT:INTEGER;
FIRSTCOUNT:INTEGER;{72}INTERACTION:0..3;{75}DELETIONSALL:BOOLEAN;
SPOTLESS:BOOLEAN;ERRORCOUNT:-1..100;
{78}HELPLINE:ARRAY[0..5]OF STRNUMBER;HELPPTR:0..6;{93}INTERRUPT:INTEGER;
OKTOINTERRUP:BOOLEAN;{101}ARITHERROR:BOOLEAN;REMAINDER:SCALED;
{112}TEMPPTR:HALFWORD;{113}MEM:ARRAY[0..MEMMAX]OF MEMORYWORD;
{114}VARUSED,DYNUSED:INTEGER;MAXVARUSED:INTEGER;{115}AVAIL:HALFWORD;
MEMEND:HALFWORD;{120}ROVER:HALFWORD;
{161}{FREE:PACKED ARRAY[0..MEMMAX]OF BOOLEAN;
WASFREE:PACKED ARRAY[0..MEMMAX]OF BOOLEAN;WASMEMEND:HALFWORD;
PANICKING:BOOLEAN;}{169}FONTINSHORTD:INTEGER;{177}DEPTHTHRESHO:INTEGER;
BREADTHMAX:INTEGER;{209}NEST:ARRAY[0..NESTSIZE]OF LISTSTATEREC;
NESTPTR:0..NESTSIZE;MAXNESTSTACK:0..NESTSIZE;CURLIST:LISTSTATEREC;
SHOWNMODE:-187..187;{233}OLDSETTING:0..21;
{238}EQTB:ARRAY[1..4545]OF MEMORYWORD;
XEQLEVEL:ARRAY[3849..4545]OF QUARTERWORD;
{241}HASH:ARRAY[258..2366]OF TWOHALVES;HASHUSED:HALFWORD;
NONEWCONTROL:BOOLEAN;CSPTR:HALFWORD;CSCOUNT:INTEGER;
{256}SAVESTACK:ARRAY[0..SAVESIZE]OF MEMORYWORD;SAVEPTR:0..SAVESIZE;
MAXSAVESTACK:0..SAVESIZE;CURLEVEL:QUARTERWORD;CURGROUP:GROUPCODE;
CURBOUNDARY:0..SAVESIZE;{269}MAGSET:INTEGER;{279}CURCMD:EIGHTBITS;
CURCHR:HALFWORD;CURTOK:HALFWORD;
{283}INPUTSTACK:ARRAY[0..STACKSIZE]OF INSTATERECOR;
INPUTPTR:0..STACKSIZE;MAXINSTACK:0..STACKSIZE;CURINPUT:INSTATERECOR;
{286}INOPEN:0..MAXINOPEN;INPUTFILE:ARRAY[1..MAXINOPEN]OF ALPHAFILE;
LINE:INTEGER;LINESTACK:ARRAY[0..MAXINOPEN]OF INTEGER;PAGE:INTEGER;
PAGESTACK:ARRAY[0..MAXINOPEN]OF INTEGER;{287}SCANNERSTATU:0..4;
WARNINGINDEX:HALFWORD;DEFREF:HALFWORD;
{290}PARAMSTACK:ARRAY[0..PARAMSIZE]OF HALFWORD;PARAMPTR:0..PARAMSIZE;
MAXPARAMSTAC:INTEGER;{291}ALIGNSTATE:INTEGER;{292}BASEPTR:0..STACKSIZE;
{314}PARLOC:HALFWORD;PARTOKEN:HALFWORD;
{355}CURMARK:ARRAY[0..4]OF HALFWORD;{360}LONGSTATE:100..103;
{361}PSTACK:ARRAY[0..8]OF HALFWORD;{380}CURVAL:INTEGER;CURVALLEVEL:0..6;
{403}RADIX:SMALLNUMBER;{413}CURORDER:GLUEORD;
{443}READFILE:ARRAY[0..15]OF ALPHAFILE;READOPEN:ARRAY[0..15]OF 0..2;
{451}CONDPTR:HALFWORD;IFLIMIT:0..3;CURIF:SMALLNUMBER;
{455}SKIPLINE,SKIPPAGE:INTEGER;{471}CURNAME:STRNUMBER;CURAREA:STRNUMBER;
CUREXT:STRNUMBER;{472}AREADELIMITE:POOLPOINTER;EXTDELIMITER:POOLPOINTER;
{479}TEXFORMATDEF:PACKED ARRAY[1..18]OF CHAR;{486}JOBNAME:STRNUMBER;
{491}DVIFILE:BYTEFILE;OUTPUTFILENA:STRNUMBER;{497}TFMFILE:BYTEFILE;
{507}FONTINFO:ARRAY[0..FONTMEMSIZE]OF MEMORYWORD;FMEMPTR:0..FONTMEMSIZE;
FONTPTR:INTERNALFONT;FONTIDENT:ARRAY[INTERNALFONT]OF HALFWORD;
FONTCHECK:ARRAY[INTERNALFONT]OF FOURQUARTERS;
FONTSIZE:ARRAY[INTERNALFONT]OF SCALED;
FONTDSIZE:ARRAY[INTERNALFONT]OF SCALED;
FONTPARAMS:ARRAY[INTERNALFONT]OF HALFWORD;
FONTNAME:ARRAY[INTERNALFONT]OF STRNUMBER;
FONTAREA:ARRAY[INTERNALFONT]OF STRNUMBER;
FONTBC:ARRAY[INTERNALFONT]OF EIGHTBITS;
FONTEC:ARRAY[INTERNALFONT]OF EIGHTBITS;
FONTGLUE:ARRAY[INTERNALFONT]OF HALFWORD;
FONTUSED:ARRAY[INTERNALFONT]OF BOOLEAN;
{508}CHARBASE:ARRAY[INTERNALFONT]OF INTEGER;
WIDTHBASE:ARRAY[INTERNALFONT]OF INTEGER;
HEIGHTBASE:ARRAY[INTERNALFONT]OF INTEGER;
DEPTHBASE:ARRAY[INTERNALFONT]OF INTEGER;
ITALICBASE:ARRAY[INTERNALFONT]OF INTEGER;
LIGKERNBASE:ARRAY[INTERNALFONT]OF INTEGER;
KERNBASE:ARRAY[INTERNALFONT]OF INTEGER;
EXTENBASE:ARRAY[INTERNALFONT]OF INTEGER;
PARAMBASE:ARRAY[INTERNALFONT]OF INTEGER;{511}NULLCHARACTE:FOURQUARTERS;
{548}TOTALPAGES:INTEGER;MAXV:SCALED;MAXH:SCALED;MAXPUSH:INTEGER;
LASTBOP:INTEGER;DEADCYCLES:INTEGER;DOINGLEADERS:BOOLEAN;C,F:QUARTERWORD;
RULEHT,RULEDP,RULEWD:SCALED;G:HALFWORD;LQ,LR,LX:INTEGER;
{551}DVIBUF:PACKEDBYTES;HALFBUF:DVIINDEX;DVILIMIT:DVIINDEX;
DVIPTR:DVIINDEX;DVIOFFSET:INTEGER;DVIGONE:INTEGER;
{561}DOWNPTR,RIGHTPTR:HALFWORD;{572}DVIH,DVIV:SCALED;CURH,CURV:SCALED;
DVIF:INTERNALFONT;CURS:INTEGER;
{602}TOTALSTRETCH,TOTALSHRINK:ARRAY[GLUEORD]OF SCALED;
{615}PARBEGINLINE:INTEGER;{637}EMPTYFIELD:TWOHALVES;
NULLDELIMITE:FOURQUARTERS;{670}CURMLIST:HALFWORD;CURSTYLE:SMALLNUMBER;
CURSIZE:SMALLNUMBER;CURMU:SCALED;MLISTPENALTI:BOOLEAN;
{674}CURF:INTERNALFONT;CURC:QUARTERWORD;CURI:FOURQUARTERS;
{709}MAGICOFFSET:INTEGER;{715}CURALIGN:HALFWORD;CURSPAN:HALFWORD;
ALIGNPTR:HALFWORD;{754}JUSTBOX:HALFWORD;{761}PASSIVE:HALFWORD;
PRINTHEAD:HALFWORD;PASSNUMBER:HALFWORD;
{763}ACTIVEWIDTH:ARRAY[1..6]OF SCALED;CURACTIVEWID:ARRAY[1..6]OF SCALED;
BACKGROUND:ARRAY[1..6]OF SCALED;BREAKWIDTH:ARRAY[1..6]OF SCALED;
{765}NOSHRINKERRO:BOOLEAN;{768}CURP:HALFWORD;SECONDPASS:BOOLEAN;
THRESHOLD:INTEGER;{773}MINIMALDEMER:ARRAY[0..3]OF SCALED;
MINIMUMDEMER:SCALED;BESTPLACE:ARRAY[0..3]OF HALFWORD;
BESTPLLINE:ARRAY[0..3]OF HALFWORD;{779}DISCWIDTH:SCALED;
{787}EASYLINE:HALFWORD;LASTSPECIALL:HALFWORD;FIRSTWIDTH:SCALED;
SECONDWIDTH:SCALED;FIRSTINDENT:SCALED;SECONDINDENT:SCALED;
{812}BESTBET:HALFWORD;FEWESTDEMERI:INTEGER;BESTLINE:HALFWORD;
ACTUALLOOSEN:INTEGER;LINEDIFF:INTEGER;{832}HC:ARRAY[0..65]OF HALFWORD;
HN:SMALLNUMBER;HA,HB:HALFWORD;HF:INTERNALFONT;
HU:ARRAY[1..63]OF ASCIICODE;{840}HYF:ARRAY[0..64]OF 0..9;
{845}HYPHENPASSED:SMALLNUMBER;{861}TRIE:ARRAY[TRIEPOINTER]OF TWOHALVES;
HYFDISTANCE:ARRAY[QUARTERWORD]OF SMALLNUMBER;
HYFNUM:ARRAY[QUARTERWORD]OF SMALLNUMBER;
HYFNEXT:ARRAY[QUARTERWORD]OF QUARTERWORD;
{866}HYPHWORD:ARRAY[HYPHPOINTER]OF STRNUMBER;
HYPHLIST:ARRAY[HYPHPOINTER]OF HALFWORD;HYPHCOUNT:HYPHPOINTER;
{883}{TRIEOPHASH:ARRAY[0..1022]OF QUARTERWORD;}TRIEOPPTR:QUARTERWORD;
{885}{TRIEC:PACKED ARRAY[TRIEPOINTER]OF ASCIICODE;
TRIEO:PACKED ARRAY[TRIEPOINTER]OF QUARTERWORD;
TRIEL:PACKED ARRAY[TRIEPOINTER]OF TRIEPOINTER;
TRIER:PACKED ARRAY[TRIEPOINTER]OF TRIEPOINTER;TRIEPTR:TRIEPOINTER;
}{886}{TRIEHASH:PACKED ARRAY[TRIEPOINTER]OF TRIEPOINTER;
}{890}{TRIETAKEN:PACKED ARRAY[TRIEPOINTER]OF BOOLEAN;
TRIEMIN:TRIEPOINTER;}TRIEMAX:TRIEPOINTER;{911}BESTHEIGHTPL:SCALED;
{920}PAGETAIL:HALFWORD;PAGECONTENTS:0..2;PAGESIZE:SCALED;
PAGEDEPTHMAX:SCALED;BESTPAGEBREA:HALFWORD;LEASTPAGEBAD:INTEGER;
BESTSIZE:SCALED;{922}PAGESOFAR:ARRAY[1..6]OF SCALED;CURPAGEDEPTH:SCALED;
LASTPAGEGLUE:HALFWORD;INSPENALTIES:INTEGER;{926}OUTPUTACTIVE:BOOLEAN;
{1010}CURBOX:HALFWORD;{1202}ERRHELPSEEN:BOOLEAN;
{1219}FORMATIDENT:STRNUMBER;{1225}FMTFILE:WORDFILE;
{1251}READYALREADY:INTEGER;{1263}WRITEFILE:ARRAY[0..15]OF ALPHAFILE;
WRITEOPEN:ARRAY[0..15]OF BOOLEAN;{1266}WRITELOC:HALFWORD;
{1296}PSEUDOTYPEIN:STRNUMBER;{1299}COUNTFILE:ALPHAFILE;
PROCEDURE INITIALIZE;VAR{19}I:0..127;{159}K:INTEGER;{867}Z:HYPHPOINTER;
BEGIN{8}{21}XCHR[32]:=' ';XCHR[33]:='!';XCHR[34]:='"';XCHR[35]:='#';
XCHR[36]:='$';XCHR[37]:='%';XCHR[38]:='&';XCHR[39]:='''';XCHR[40]:='(';
XCHR[41]:=')';XCHR[42]:='*';XCHR[43]:='+';XCHR[44]:=',';XCHR[45]:='-';
XCHR[46]:='.';XCHR[47]:='/';XCHR[48]:='0';XCHR[49]:='1';XCHR[50]:='2';
XCHR[51]:='3';XCHR[52]:='4';XCHR[53]:='5';XCHR[54]:='6';XCHR[55]:='7';
XCHR[56]:='8';XCHR[57]:='9';XCHR[58]:=':';XCHR[59]:=';';XCHR[60]:='<';
XCHR[61]:='=';XCHR[62]:='>';XCHR[63]:='?';XCHR[64]:='@';XCHR[65]:='A';
XCHR[66]:='B';XCHR[67]:='C';XCHR[68]:='D';XCHR[69]:='E';XCHR[70]:='F';
XCHR[71]:='G';XCHR[72]:='H';XCHR[73]:='I';XCHR[74]:='J';XCHR[75]:='K';
XCHR[76]:='L';XCHR[77]:='M';XCHR[78]:='N';XCHR[79]:='O';XCHR[80]:='P';
XCHR[81]:='Q';XCHR[82]:='R';XCHR[83]:='S';XCHR[84]:='T';XCHR[85]:='U';
XCHR[86]:='V';XCHR[87]:='W';XCHR[88]:='X';XCHR[89]:='Y';XCHR[90]:='Z';
XCHR[91]:='[';XCHR[92]:='\';XCHR[93]:=']';XCHR[94]:='↑';XCHR[95]:='_';
XCHR[96]:='`';XCHR[97]:='a';XCHR[98]:='b';XCHR[99]:='c';XCHR[100]:='d';
XCHR[101]:='e';XCHR[102]:='f';XCHR[103]:='g';XCHR[104]:='h';
XCHR[105]:='i';XCHR[106]:='j';XCHR[107]:='k';XCHR[108]:='l';
XCHR[109]:='m';XCHR[110]:='n';XCHR[111]:='o';XCHR[112]:='p';
XCHR[113]:='q';XCHR[114]:='r';XCHR[115]:='s';XCHR[116]:='t';
XCHR[117]:='u';XCHR[118]:='v';XCHR[119]:='w';XCHR[120]:='x';
XCHR[121]:='y';XCHR[122]:='z';XCHR[123]:='{';XCHR[124]:='|';
XCHR[125]:='}';XCHR[126]:='~';XCHR[0]:=' ';XCHR[127]:=' ';
{23}FOR I:=1 TO 31 DO XCHR[I]:=CHR(I);XCHR[24]:=CHR(95);
XCHR[26]:=CHR(27);XCHR[27]:=CHR(126);
{24}FOR I:=0 TO 127 DO XORD[CHR(I)]:=127;
FOR I:=1 TO 126 DO XORD[XCHR[I]]:=I;{73}INTERACTION:=3;
{76}DELETIONSALL:=TRUE;SPOTLESS:=TRUE;ERRORCOUNT:=0;{94}INTERRUPT:=0;
OKTOINTERRUP:=TRUE;{162}{WASMEMEND:=0;PANICKING:=FALSE;}{211}NESTPTR:=0;
MAXNESTSTACK:=0;CURLIST.MODEFIELD:=1;CURLIST.HEADFIELD:=25001;
CURLIST.TAILFIELD:=25001;CURLIST.AUXFIELD:=-65536000;CURLIST.MLFIELD:=0;
CURLIST.ALREADYFIELD:=0;SHOWNMODE:=0;{928}PAGECONTENTS:=0;
PAGETAIL:=25002;MEM[25002].HH.RH:=0;LASTPAGEGLUE:=262143;
INSPENALTIES:=0;CURPAGEDEPTH:=0;PAGEDEPTHMAX:=0;;
{239}FOR K:=3849 TO 4545 DO XEQLEVEL[K]:=1;{242}NONEWCONTROL:=TRUE;
HASH[258].LH:=0;HASH[258].RH:=0;
FOR K:=259 TO 2366 DO HASH[K]:=HASH[258];{257}SAVEPTR:=0;CURLEVEL:=1;
CURGROUP:=0;CURBOUNDARY:=0;MAXSAVESTACK:=0;{270}MAGSET:=0;
{356}CURMARK[0]:=0;CURMARK[1]:=0;CURMARK[2]:=0;CURMARK[3]:=0;
CURMARK[4]:=0;{404}CURVAL:=0;CURVALLEVEL:=0;RADIX:=0;
{444}FOR K:=0 TO 15 DO READOPEN[K]:=2;{452}CONDPTR:=0;IFLIMIT:=0;
CURIF:=0;{480}TEXFORMATDEF:='PLAIN.fmt[tex,sys]';{509}FONTPTR:=0;
FMEMPTR:=7;FONTNAME[0]:=609;FONTIDENT[0]:=2366;HASH[2366].RH:=609;
EQTB[2366].HH.B1:=1;EQTB[2366].HH.B0:=77;EQTB[2366].HH.RH:=0;
FONTBC[0]:=1;FONTEC[0]:=0;FONTGLUE[0]:=0;FONTPARAMS[0]:=7;
PARAMBASE[0]:=-1;FOR K:=0 TO 6 DO FONTINFO[K].INT:=0;
FOR K:=0 TO FONTMAX DO FONTUSED[K]:=FALSE;{512}NULLCHARACTE.B0:=0;
NULLCHARACTE.B1:=0;NULLCHARACTE.B2:=0;NULLCHARACTE.B3:=0;
{549}TOTALPAGES:=0;MAXV:=0;MAXH:=0;MAXPUSH:=0;LASTBOP:=-1;
DOINGLEADERS:=FALSE;DEADCYCLES:=0;{552}HALFBUF:=DVIBUFSIZE DIV 2;
DVILIMIT:=DVIBUFSIZE;DVIPTR:=0;DVIOFFSET:=0;DVIGONE:=0;{562}DOWNPTR:=0;
RIGHTPTR:=0;{616}PARBEGINLINE:=0;{638}EMPTYFIELD.RH:=0;EMPTYFIELD.LH:=0;
NULLDELIMITE.B0:=0;NULLDELIMITE.B1:=0;NULLDELIMITE.B2:=0;
NULLDELIMITE.B3:=0;{716}ALIGNPTR:=0;CURALIGN:=0;CURSPAN:=0;
{868}FOR Z:=0 TO 307 DO BEGIN HYPHWORD[Z]:=0;HYPHLIST[Z]:=0;END;
HYPHCOUNT:=0;{927}OUTPUTACTIVE:=FALSE;{1203}ERRHELPSEEN:=FALSE;
{1220}FORMATIDENT:=0;{1252}READYALREADY:=314159;
{1264}FOR K:=0 TO 15 DO WRITEOPEN[K]:=FALSE;{1297}PSEUDOTYPEIN:=0;
PAGE:=0;{[160]FOR K:=1 TO 19 DO MEM[K].INT:=0;K:=0;
WHILE K<20 DO BEGIN MEM[K].HH.RH:=1;MEM[K].HH.B0:=0;MEM[K].HH.B1:=0;
K:=K+4;END;MEM[6].INT:=65536;MEM[4].HH.B0:=1;MEM[10].INT:=65536;
MEM[8].HH.B0:=2;MEM[14].INT:=65536;MEM[12].HH.B0:=1;MEM[15].INT:=65536;
MEM[12].HH.B1:=1;MEM[18].INT:=-65536;MEM[16].HH.B0:=1;ROVER:=20;
MEM[ROVER].HH.RH:=262143;MEM[ROVER].HH.LH:=25000-ROVER;
MEM[ROVER+1].HH.LH:=ROVER;MEM[ROVER+1].HH.RH:=ROVER;MEM[25000].HH.RH:=0;
MEM[25000].HH.LH:=0;FOR K:=25001 TO 25013 DO MEM[K]:=MEM[25000];
[734]MEM[25010].HH.LH:=6459;[740]MEM[25009].HH.RH:=512;
MEM[25009].HH.LH:=0;[760]MEM[25006].HH.B0:=1;MEM[25007].HH.LH:=262143;
MEM[25006].HH.B1:=0;[921]MEM[25000].HH.B1:=255;MEM[25000].HH.B0:=1;
MEM[25000].HH.RH:=25000;[925]MEM[25002].HH.B0:=10;MEM[25002].HH.B1:=0;;
AVAIL:=0;MEMEND:=25013;VARUSED:=20;DYNUSED:=14;MAXVARUSED:=VARUSED;
[217]EQTB[2367].HH.B0:=93;EQTB[2367].HH.RH:=0;EQTB[2367].HH.B1:=0;
FOR K:=1 TO 2366 DO EQTB[K]:=EQTB[2367];[222]EQTB[2368].HH.RH:=0;
EQTB[2368].HH.B1:=1;EQTB[2368].HH.B0:=105;
FOR K:=2369 TO 2896 DO EQTB[K]:=EQTB[2368];
MEM[0].HH.RH:=MEM[0].HH.RH+529;[225]EQTB[2897].HH.RH:=0;
EQTB[2897].HH.B0:=106;EQTB[2897].HH.B1:=1;
FOR K:=2898 TO 2902 DO EQTB[K]:=EQTB[2367];EQTB[2903].HH.RH:=0;
EQTB[2903].HH.B0:=107;EQTB[2903].HH.B1:=1;
FOR K:=2904 TO 3158 DO EQTB[K]:=EQTB[2903];EQTB[3159].HH.RH:=0;
EQTB[3159].HH.B0:=108;EQTB[3159].HH.B1:=1;
FOR K:=3160 TO 3207 DO EQTB[K]:=EQTB[3159];EQTB[3208].HH.RH:=0;
EQTB[3208].HH.B0:=108;EQTB[3208].HH.B1:=1;
FOR K:=3209 TO 3848 DO EQTB[K]:=EQTB[3208];
FOR K:=0 TO 127 DO BEGIN EQTB[3209+K].HH.RH:=12;EQTB[3337+K].HH.RH:=K;
EQTB[3721+K].HH.RH:=1000;END;EQTB[3222].HH.RH:=5;EQTB[3241].HH.RH:=10;
EQTB[3301].HH.RH:=0;EQTB[3221].HH.RH:=5;EQTB[3336].HH.RH:=15;
EQTB[3209].HH.RH:=9;FOR K:=65 TO 90 DO BEGIN EQTB[3209+K].HH.RH:=11;
EQTB[3209+K+32].HH.RH:=11;EQTB[3337+K].HH.RH:=K+28928;
EQTB[3337+K+32].HH.RH:=K+28960;EQTB[3465+K].HH.RH:=K+32;
EQTB[3465+K+32].HH.RH:=K+32;EQTB[3593+K].HH.RH:=K;
EQTB[3593+K+32].HH.RH:=K;EQTB[3721+K].HH.RH:=999;END;
[230]FOR K:=3849 TO 4142 DO EQTB[K].INT:=0;EQTB[3865].INT:=1000;
EQTB[3850].INT:=10000;EQTB[3885].INT:=25;
FOR K:=0 TO 127 DO EQTB[4143+K].INT:=-1;EQTB[4189].INT:=0;
[237]FOR K:=4271 TO 4545 DO EQTB[K].INT:=0;[243]HASHUSED:=2358;
CSCOUNT:=0;[892]TRIEOPPTR:=0;TRIE[0].RH:=0;TRIE[0].B1:=0;TRIE[0].B0:=0;
FOR K:=1 TO 127 DO TRIE[K]:=TRIE[0];TRIEMAX:=127;
[1150]HASH[2358].RH:=971;[1221]FORMATIDENT:=1061;
[1289]HASH[2365].RH:=1100;EQTB[2365].HH.B1:=1;EQTB[2365].HH.B0:=102;
EQTB[2365].HH.RH:=0;}END;{56}PROCEDURE PRINTLN;
BEGIN CASE SELECTOR OF 19:BEGIN WRITELN(TERMOUT);WRITELN(LOGFILE);
TERMOFFSET:=0;FILEOFFSET:=0;END;18:BEGIN WRITELN(LOGFILE);FILEOFFSET:=0;
END;17:BEGIN WRITELN(TERMOUT);TERMOFFSET:=0;END;16,20,21:;
OTHERS:WRITELN(WRITEFILE[SELECTOR])END;END;
{57}PROCEDURE PRINTCHAR(C:ASCIICODE);
BEGIN CASE SELECTOR OF 19:BEGIN WRITE(TERMOUT,XCHR[C]);
WRITE(LOGFILE,XCHR[C]);TERMOFFSET:=TERMOFFSET+1;
FILEOFFSET:=FILEOFFSET+1;
IF TERMOFFSET=MAXPRINTLINE THEN BEGIN WRITELN(TERMOUT);TERMOFFSET:=0;
END;IF FILEOFFSET=MAXPRINTLINE THEN BEGIN WRITELN(LOGFILE);
FILEOFFSET:=0;END;END;18:BEGIN WRITE(LOGFILE,XCHR[C]);
FILEOFFSET:=FILEOFFSET+1;IF FILEOFFSET=MAXPRINTLINE THEN PRINTLN;END;
17:BEGIN WRITE(TERMOUT,XCHR[C]);TERMOFFSET:=TERMOFFSET+1;
IF TERMOFFSET=MAXPRINTLINE THEN PRINTLN;END;16:;
20:IF TALLY<TRICKCOUNT THEN TRICKBUF[TALLY MOD ERRORLINE]:=C;
21:BEGIN IF POOLPTR<POOLSIZE THEN BEGIN STRPOOL[POOLPTR]:=C;
POOLPTR:=POOLPTR+1;END;END;OTHERS:WRITE(WRITEFILE[SELECTOR],XCHR[C])END;
TALLY:=TALLY+1;END;{58}PROCEDURE PRINT(S:INTEGER);VAR J:POOLPOINTER;
BEGIN IF(S<0)OR(S>=STRPTR)THEN S:=131;J:=STRSTART[S];
WHILE J<STRSTART[S+1]DO BEGIN PRINTCHAR(STRPOOL[J]);J:=J+1;END;END;
{59}PROCEDURE SLOWPRINT(S:INTEGER);VAR J:POOLPOINTER;
BEGIN IF(S<0)OR(S>=STRPTR)THEN S:=131;J:=STRSTART[S];
WHILE J<STRSTART[S+1]DO BEGIN PRINT(STRPOOL[J]);J:=J+1;END;END;
{61}PROCEDURE PRINTNL(S:STRNUMBER);
BEGIN IF((TERMOFFSET>0)AND(ODD(SELECTOR)))OR((FILEOFFSET>0)AND(SELECTOR
>=18))THEN PRINTLN;PRINT(S);END;{62}PROCEDURE PRINTESC(S:STRNUMBER);
BEGIN PRINTCHAR(92);PRINT(S);END;{63}PROCEDURE PRINTDIGS(K:EIGHTBITS);
BEGIN WHILE K>0 DO BEGIN K:=K-1;PRINTCHAR(48+DIG[K]);END;END;
{64}PROCEDURE PRINTINT(N:INTEGER);VAR K:0..20;M:NONNEGATIVEI;BEGIN K:=0;
IF N<0 THEN BEGIN PRINTCHAR(45);
IF N>-100000000 THEN N:=-N ELSE BEGIN M:=-1-N;N:=M DIV 10;
M:=(M MOD 10)+1;K:=1;IF M<10 THEN DIG[0]:=M ELSE BEGIN DIG[0]:=0;N:=N+1;
END;END;END;REPEAT DIG[K]:=N MOD 10;N:=N DIV 10;K:=K+1;UNTIL N=0;
PRINTDIGS(K);END;{247}PROCEDURE PRINTCS(P:HALFWORD);VAR J:POOLPOINTER;
BEGIN IF P<258 THEN IF P>=129 THEN IF P<257 THEN PRINT(P-129)ELSE PRINT(
320)ELSE IF P<1 THEN PRINTESC(321)ELSE BEGIN PRINTESC(P-1);
IF EQTB[3209+P-1].HH.RH=11 THEN PRINTCHAR(32);
END ELSE IF P>=2367 THEN PRINTESC(321)ELSE IF(HASH[P].RH<128)OR(HASH[P].
RH>=STRPTR)THEN PRINTESC(322)ELSE BEGIN PRINTCHAR(92);
SLOWPRINT(HASH[P].RH);PRINTCHAR(32);END;END;
{248}PROCEDURE SPRINTCS(P:HALFWORD);VAR J:POOLPOINTER;
BEGIN IF P<258 THEN IF P<129 THEN PRINTESC(P-1)ELSE IF P<257 THEN PRINT(
P-129)ELSE PRINT(320)ELSE BEGIN PRINTCHAR(92);SLOWPRINT(HASH[P].RH);END;
END;{477}PROCEDURE PRINTFILENAM(N,A,E:STRNUMBER);BEGIN PRINT(N);
PRINT(E);PRINT(A);END;{650}PROCEDURE PRINTSIZE(S:INTEGER);
BEGIN IF S=0 THEN PRINTESC(689)ELSE IF S=16 THEN PRINTESC(690)ELSE
PRINTESC(691);END;{77}PROCEDURE GETTOKEN;FORWARD;PROCEDURE TERMINPUT;
FORWARD;PROCEDURE SHOWCONTEXT;FORWARD;PROCEDURE BEGINFILEREA;FORWARD;
PROCEDURE CLOSEFILESAN;FORWARD;PROCEDURE CLEARFORERRO;FORWARD;
{PROCEDURE DEBUGHELP;FORWARD;}{79}PROCEDURE JUMPOUT;BEGIN GOTO 9998;END;
{80}PROCEDURE ERROR;LABEL 22,10;VAR C:ASCIICODE;S1,S2,S3,S4:INTEGER;
BEGIN PRINTCHAR(46);SHOWCONTEXT;
IF INTERACTION=3 THEN{81}WHILE TRUE DO BEGIN 22:CLEARFORERRO;
BEGIN PRINT(135);TERMINPUT;END;IF LAST=FIRST THEN GOTO 10;
C:=BUFFER[FIRST];IF C>=97 THEN C:=C-32;
{82}CASE C OF 49,50,51,52,53,54,55,56,57:IF DELETIONSALL THEN{86}BEGIN
S1:=CURTOK;S2:=CURCMD;S3:=CURCHR;S4:=ALIGNSTATE;ALIGNSTATE:=1000000;
OKTOINTERRUP:=FALSE;
IF(LAST>FIRST+1)AND(BUFFER[FIRST+1]>=48)AND(BUFFER[FIRST+1]<=57)THEN C:=
C*10+BUFFER[FIRST+1]-48*11 ELSE C:=C-48;WHILE C>0 DO BEGIN GETTOKEN;
C:=C-1;END;CURTOK:=S1;CURCMD:=S2;CURCHR:=S3;ALIGNSTATE:=S4;
OKTOINTERRUP:=TRUE;BEGIN HELPPTR:=2;HELPLINE[1]:=145;HELPLINE[0]:=146;
END;SHOWCONTEXT;GOTO 22;END;{68:BEGIN DEBUGHELP;GOTO 22;END;
}69,84:IF BASEPTR>0 THEN BEGIN SELECTOR:=21;POOLPTR:=STRSTART[STRPTR];
PRINT(136);PRINT(INPUTSTACK[BASEPTR].NAMEFIELD);PRINTCHAR(47);
PRINTINT(PAGE);PRINT(137);PRINTINT(LINE);PRINTCHAR(108);PRINTCHAR(13);
IF STRPTR<MAXSTRINGS THEN BEGIN PSEUDOTYPEIN:=STRPTR;STRPTR:=STRPTR+1;
STRSTART[STRPTR]:=POOLPTR;END;SELECTOR:=19;INTERACTION:=2;JUMPOUT;END;
72:{87}BEGIN IF HELPPTR=0 THEN BEGIN HELPPTR:=2;HELPLINE[1]:=147;
HELPLINE[0]:=148;END;REPEAT HELPPTR:=HELPPTR-1;PRINT(HELPLINE[HELPPTR]);
PRINTLN;UNTIL HELPPTR=0;BEGIN HELPPTR:=4;HELPLINE[3]:=149;
HELPLINE[2]:=148;HELPLINE[1]:=150;HELPLINE[0]:=151;END;GOTO 22;END;
73:{85}BEGIN BEGINFILEREA;
IF LAST>FIRST+1 THEN BEGIN CURINPUT.LOCFIELD:=FIRST+1;BUFFER[FIRST]:=32;
END ELSE BEGIN BEGIN PRINT(144);TERMINPUT;END;CURINPUT.LOCFIELD:=FIRST;
END;FIRST:=LAST;CURINPUT.LIMITFIELD:=LAST-1;GOTO 10;END;
81,82,83:{84}BEGIN ERRORCOUNT:=0;INTERACTION:=0+C-81;
IF C=81 THEN SELECTOR:=SELECTOR-1;PRINTLN;GOTO 10;END;
88:BEGIN INTERACTION:=2;JUMPOUT;END;OTHERS:END;{83}PRINT(138);
PRINTNL(139);PRINTNL(140);IF BASEPTR>0 THEN PRINT(141);
IF DELETIONSALL THEN PRINTNL(142);PRINTNL(143);END;
ERRORCOUNT:=ERRORCOUNT+1;IF ERRORCOUNT=100 THEN BEGIN PRINTNL(134);
JUMPOUT;END;{88}IF INTERACTION>0 THEN SELECTOR:=SELECTOR-1;
WHILE HELPPTR>0 DO BEGIN HELPPTR:=HELPPTR-1;PRINTNL(HELPLINE[HELPPTR]);
END;PRINTLN;IF INTERACTION>0 THEN SELECTOR:=SELECTOR+1;PRINTLN;10:END;
{90}PROCEDURE FATALERROR(S:STRNUMBER);BEGIN PRINTNL(153);
BEGIN HELPPTR:=1;HELPLINE[0]:=S;END;
BEGIN IF INTERACTION=3 THEN INTERACTION:=2;ERROR;
{IF INTERACTION>0 THEN DEBUGHELP;}JUMPOUT;END;END;
{91}PROCEDURE OVERFLOW(S:STRNUMBER;N:INTEGER);BEGIN PRINTNL(154);
PRINT(S);PRINTCHAR(61);PRINTINT(N);PRINTCHAR(93);BEGIN HELPPTR:=2;
HELPLINE[1]:=155;HELPLINE[0]:=156;END;
BEGIN IF INTERACTION=3 THEN INTERACTION:=2;ERROR;
{IF INTERACTION>0 THEN DEBUGHELP;}JUMPOUT;END;END;
{92}PROCEDURE CONFUSION(S:STRNUMBER);BEGIN SELECTOR:=19;
IF SPOTLESS THEN BEGIN PRINTNL(157);PRINT(S);PRINTCHAR(41);
BEGIN HELPPTR:=1;HELPLINE[0]:=158;END;END ELSE BEGIN PRINTNL(159);
BEGIN HELPPTR:=2;HELPLINE[1]:=160;HELPLINE[0]:=161;END;END;
BEGIN IF INTERACTION=3 THEN INTERACTION:=2;ERROR;
{IF INTERACTION>0 THEN DEBUGHELP;}JUMPOUT;END;END;
{27}FUNCTION AOPENIN(VAR F:ALPHAFILE):BOOLEAN;
BEGIN RESET(F,NAMEOFFILE,'/E/O/N:19');AOPENIN:=NOT EOF(F);END;
FUNCTION AOPENOUT(VAR F:ALPHAFILE):BOOLEAN;
BEGIN REWRITE(F,NAMEOFFILE,'/O');AOPENOUT:=EOF(F);END;
FUNCTION BOPENIN(VAR F:BYTEFILE):BOOLEAN;
BEGIN RESET(F,NAMEOFFILE,'/B:8/O/N:19');BOPENIN:=NOT EOF(F);END;
FUNCTION BOPENOUT(VAR F:BYTEFILE):BOOLEAN;
BEGIN REWRITE(F,NAMEOFFILE,'/O/N:19');BOPENOUT:=EOF(F);END;
FUNCTION WOPENIN(VAR F:WORDFILE):BOOLEAN;
BEGIN RESET(F,NAMEOFFILE,'/O/N:19');WOPENIN:=NOT EOF(F);END;
FUNCTION WOPENOUT(VAR F:WORDFILE):BOOLEAN;
BEGIN REWRITE(F,NAMEOFFILE,'/O/N:19');WOPENOUT:=EOF(F);END;
{28}PROCEDURE ACLOSE(VAR F:ALPHAFILE);BEGIN CLOSE(F);END;
PROCEDURE BCLOSE(VAR F:BYTEFILE);BEGIN CLOSE(F);END;
PROCEDURE WCLOSE(VAR F:WORDFILE);BEGIN CLOSE(F);END;
{31}FUNCTION INPUTLN(VAR F:ALPHAFILE):BOOLEAN;LABEL 1;VAR N:INTEGER;
K,M:0..BUFSIZE;BEGIN GET(F);IF F↑=CHR(10)THEN GET(F);
IF EOF(F)THEN INPUTLN:=FALSE ELSE BEGIN LAST:=FIRST;READ(F,AUXBUF:N);
IF BUFFER[FIRST]=12 THEN BEGIN PAGE:=PAGE+1;LINE:=1;END;
1:IF LAST+N>MAXBUFSTACK THEN IF LAST+N>=BUFSIZE THEN BEGIN MAXBUFSTACK:=
BUFSIZE;OVERFLOW(128,BUFSIZE);END ELSE MAXBUFSTACK:=LAST+N;
IF N>0 THEN BEGIN M:=LAST;IF N=72 THEN LAST:=M+71 ELSE LAST:=M+N;
FOR K:=M TO LAST-1 DO BUFFER[K]:=XORD[AUXBUF[K-M]];
IF N=72 THEN BEGIN READ(F,AUXBUF:N);GOTO 1;END;
END ELSE IF F↑=CHR(12)THEN BEGIN AUXBUF[0]:=F↑;N:=1;GOTO 1;END;
INPUTLN:=TRUE;END;END;{37}PROCEDURE ESCI(VAR X:INTEGER);EXTERN;
FUNCTION RESCAN:BOOLEAN;EXTERN;FUNCTION TMPIN(F:STRING;
VAR S:STRING):INTEGER;EXTERN;FUNCTION CCLSW:BOOLEAN;EXTERN;
PROCEDURE PTWR1W(PTY,C:INTEGER);EXTERN;FUNCTION INITTERMINAL:BOOLEAN;
LABEL 10;VAR L:INTEGER;LINEFOUND:BOOLEAN;
TMPCORBUF:PACKED ARRAY[0..100]OF CHAR;BEGIN RESET(TERMIN,'TTY:','/O/I');
ESCI(INTERRUPT);LAST:=FIRST;
IF CCLSW THEN BEGIN L:=TMPIN('TEX',TMPCORBUF);CURINPUT.LOCFIELD:=1;
WHILE(CURINPUT.LOCFIELD<L)AND(TMPCORBUF[CURINPUT.LOCFIELD]<>'←')DO
CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;
CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;
WHILE CURINPUT.LOCFIELD<L DO BEGIN IF TMPCORBUF[CURINPUT.LOCFIELD]>' '
THEN BEGIN BUFFER[LAST]:=XORD[TMPCORBUF[CURINPUT.LOCFIELD]];
LAST:=LAST+1;END;CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;END;
END ELSE{IF FALSE THEN}IF RESCAN THEN BEGIN READLN(TERMIN);
WHILE(NOT EOLN(TERMIN))AND(TERMIN↑<>';')DO GET(TERMIN);
IF TERMIN↑=';'THEN BEGIN GET(TERMIN);
WHILE NOT EOLN(TERMIN)DO BEGIN BUFFER[LAST]:=XORD[TERMIN↑];LAST:=LAST+1;
GET(TERMIN);END;END;END;LINEFOUND:=(LAST>FIRST);
WHILE TRUE DO BEGIN CURINPUT.LOCFIELD:=FIRST;
WHILE(CURINPUT.LOCFIELD<LAST)AND(BUFFER[CURINPUT.LOCFIELD]=32)DO
CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;
IF CURINPUT.LOCFIELD<LAST THEN BEGIN INITTERMINAL:=TRUE;GOTO 10;END;
IF LINEFOUND THEN WRITELN(TERMOUT,
'Please type the name of your input file.');WRITE(TERMOUT,'**');
BREAK(TERMOUT);BUFFER[FIRST]:=0;
IF NOT INPUTLN(TERMIN)THEN BEGIN WRITELN(TERMOUT);
WRITE(TERMOUT,'! End of file on the terminal... why?');
INITTERMINAL:=FALSE;GOTO 10;END;LINEFOUND:=TRUE;END;10:END;
{43}FUNCTION MAKESTRING:STRNUMBER;
BEGIN IF STRPTR=MAXSTRINGS THEN OVERFLOW(130,MAXSTRINGS);
STRPTR:=STRPTR+1;STRSTART[STRPTR]:=POOLPTR;MAKESTRING:=STRPTR-1;END;
{45}FUNCTION STREQBUF(S:STRNUMBER;K:INTEGER):BOOLEAN;LABEL 45;
VAR J:POOLPOINTER;RESULT:BOOLEAN;BEGIN J:=STRSTART[S];RESULT:=FALSE;
WHILE J<STRSTART[S+1]DO BEGIN IF STRPOOL[J]<>BUFFER[K]THEN GOTO 45;
J:=J+1;K:=K+1;END;RESULT:=TRUE;45:STREQBUF:=RESULT;END;
{46}FUNCTION STREQSTR(S,T:STRNUMBER):BOOLEAN;LABEL 45;
VAR J,K:POOLPOINTER;RESULT:BOOLEAN;BEGIN RESULT:=FALSE;
IF(STRSTART[S+1]-STRSTART[S])<>(STRSTART[T+1]-STRSTART[T])THEN GOTO 45;
J:=STRSTART[S];K:=STRSTART[T];
WHILE J<STRSTART[S+1]DO BEGIN IF STRPOOL[J]<>STRPOOL[K]THEN GOTO 45;
J:=J+1;K:=K+1;END;RESULT:=TRUE;45:STREQSTR:=RESULT;END;
{47}{FUNCTION INITSTRINGS:BOOLEAN;LABEL 30,10;VAR K,L:0..127;M,N:CHAR;
G:STRNUMBER;A:INTEGER;C:BOOLEAN;BEGIN POOLPTR:=0;STRPTR:=0;
STRSTART[0]:=0;
[48]FOR K:=0 TO 127 DO BEGIN IF(K<32)AND([49]K IN[0,9..13,27])THEN BEGIN
BEGIN STRPOOL[POOLPTR]:=94;POOLPTR:=POOLPTR+1;END;
BEGIN STRPOOL[POOLPTR]:=94;POOLPTR:=POOLPTR+1;END;
BEGIN STRPOOL[POOLPTR]:=K+64;POOLPTR:=POOLPTR+1;END;
END ELSE IF K=127 THEN BEGIN BEGIN STRPOOL[POOLPTR]:=94;
POOLPTR:=POOLPTR+1;END;BEGIN STRPOOL[POOLPTR]:=94;POOLPTR:=POOLPTR+1;
END;BEGIN STRPOOL[POOLPTR]:=63;POOLPTR:=POOLPTR+1;END;
END ELSE BEGIN STRPOOL[POOLPTR]:=K;POOLPTR:=POOLPTR+1;END;G:=MAKESTRING;
END;[51]NAMEOFFILE:=POOLNAME;IF AOPENIN(POOLFILE)THEN BEGIN C:=FALSE;
REPEAT[52]BEGIN IF EOF(POOLFILE)THEN BEGIN WRITELN(TERMOUT,
'! TEX.POOL has no check sum.');ACLOSE(POOLFILE);INITSTRINGS:=FALSE;
GOTO 10;END;READ(POOLFILE,M,N);IF M='*'THEN[53]BEGIN A:=0;K:=1;
WHILE TRUE DO BEGIN IF(XORD[N]<48)OR(XORD[N]>57)THEN BEGIN WRITELN(
TERMOUT,'! TEX.POOL check sum doesn''t have nine digits.');
ACLOSE(POOLFILE);INITSTRINGS:=FALSE;GOTO 10;END;A:=10*A+XORD[N]-48;
IF K=9 THEN GOTO 30;K:=K+1;READ(POOLFILE,N);END;
30:IF A<>86336324 THEN BEGIN WRITELN(TERMOUT,
'! TEX.POOL doesn''t match; TANGLE me again.');ACLOSE(POOLFILE);
INITSTRINGS:=FALSE;GOTO 10;END;C:=TRUE;
END ELSE BEGIN IF(XORD[M]<48)OR(XORD[M]>57)OR(XORD[N]<48)OR(XORD[N]>57)
THEN BEGIN WRITELN(TERMOUT,
'! TEX.POOL line doesn''t begin with two digits.');ACLOSE(POOLFILE);
INITSTRINGS:=FALSE;GOTO 10;END;L:=XORD[M]*10+XORD[N]-48*11;
IF POOLPTR+L+STRINGVACANC>POOLSIZE THEN BEGIN WRITELN(TERMOUT,
'! You have to increase POOLSIZE.');ACLOSE(POOLFILE);INITSTRINGS:=FALSE;
GOTO 10;END;
FOR K:=1 TO L DO BEGIN IF EOLN(POOLFILE)THEN BEGIN WRITELN(TERMOUT,
'! TEX.POOL line too short.');ACLOSE(POOLFILE);INITSTRINGS:=FALSE;
GOTO 10;END;READ(POOLFILE,M);BEGIN STRPOOL[POOLPTR]:=XORD[M];
POOLPTR:=POOLPTR+1;END;END;READLN(POOLFILE);G:=MAKESTRING;END;END;
UNTIL C;ACLOSE(POOLFILE);INITSTRINGS:=TRUE;
END ELSE BEGIN WRITELN(TERMOUT,'! I can''t read TEX.POOL.');
ACLOSE(POOLFILE);INITSTRINGS:=FALSE;GOTO 10;END;10:END;
}{65}PROCEDURE PRINTTWO(N:INTEGER);
BEGIN PRINTCHAR(48+((ABS(N)DIV 10)MOD 10));PRINTCHAR(48+(ABS(N)MOD 10));
END;{66}PROCEDURE PRINTOCTAL(N:INTEGER);VAR K:0..22;BEGIN K:=0;
PRINTCHAR(39);REPEAT DIG[K]:=N MOD 8;N:=N DIV 8;K:=K+1;UNTIL N=0;
PRINTDIGS(K);END;{67}PROCEDURE PRINTASCII(C:INTEGER);
BEGIN IF(C>=0)AND(C<=127)THEN PRINT(C)ELSE BEGIN PRINTCHAR(91);
IF C<0 THEN PRINTINT(C)ELSE PRINTOCTAL(C);PRINTCHAR(93);END;END;
{68}PROCEDURE PRINTROMANIN(N:NONNEGATIVEI);LABEL 10;VAR J,K:POOLPOINTER;
U,V:NONNEGATIVEI;BEGIN J:=STRSTART[132];V:=1000;
WHILE TRUE DO BEGIN WHILE N>=V DO BEGIN PRINTCHAR(STRPOOL[J]);N:=N-V;
END;IF N=0 THEN GOTO 10;K:=J+2;U:=V DIV(STRPOOL[K-1]-48);
IF STRPOOL[K-1]=50 THEN BEGIN K:=K+2;U:=U DIV(STRPOOL[K-1]-48);END;
IF N+U>=V THEN BEGIN PRINTCHAR(STRPOOL[K]);N:=N+U;END ELSE BEGIN J:=J+2;
V:=V DIV(STRPOOL[J-1]-48);END;END;10:END;{69}PROCEDURE PRINTCURRENT;
VAR J:POOLPOINTER;BEGIN J:=STRSTART[STRPTR];
WHILE J<POOLPTR DO BEGIN PRINTCHAR(STRPOOL[J]);J:=J+1;END;END;
{70}PROCEDURE TERMINPUT;VAR K:0..BUFSIZE;BEGIN BREAK(TERMOUT);
BUFFER[FIRST]:=0;IF NOT INPUTLN(TERMIN)THEN FATALERROR(133);
TERMOFFSET:=0;SELECTOR:=SELECTOR-1;
IF LAST<>FIRST THEN FOR K:=FIRST TO LAST-1 DO PRINT(BUFFER[K]);PRINTLN;
SELECTOR:=SELECTOR+1;END;{89}PROCEDURE INTERROR(N:INTEGER);
BEGIN PRINT(152);PRINTINT(N);PRINTCHAR(41);ERROR;END;
{95}PROCEDURE PAUSEFORINST;
BEGIN IF OKTOINTERRUP THEN BEGIN INTERACTION:=3;
IF(SELECTOR=18)OR(SELECTOR=16)THEN SELECTOR:=SELECTOR+1;PRINTNL(162);
BEGIN HELPPTR:=3;HELPLINE[2]:=163;HELPLINE[1]:=164;HELPLINE[0]:=165;END;
DELETIONSALL:=FALSE;ERROR;DELETIONSALL:=TRUE;INTERRUPT:=0;END;END;
{97}FUNCTION HALF(X:INTEGER):INTEGER;
BEGIN IF ODD(X)THEN HALF:=(X+1)DIV 2 ELSE HALF:=X DIV 2;END;
{99}FUNCTION ROUNDDECIMAL(K:SMALLNUMBER):SCALED;VAR A:INTEGER;
BEGIN A:=0;WHILE K>0 DO BEGIN K:=K-1;A:=(A+DIG[K]*131072)DIV 10;END;
ROUNDDECIMAL:=(A+1)DIV 2;END;{100}PROCEDURE PRINTSCALED(S:SCALED);
VAR K:0..4;BEGIN IF S<0 THEN BEGIN PRINTCHAR(45);S:=-S;END;
PRINTINT(S DIV 65536);S:=((S MOD 65536)*3125+1024)DIV 2048;
PRINTCHAR(46);REPEAT PRINTCHAR(48+(S DIV 10000));S:=10*(S MOD 10000);
UNTIL S=0;END;{102}FUNCTION NXPLUSY(N:INTEGER;X,Y:SCALED):SCALED;
BEGIN IF N<0 THEN BEGIN X:=-X;N:=-N;END;
IF N=0 THEN NXPLUSY:=Y ELSE IF((X<=(1073741823-Y)DIV N)AND(-X<=(
1073741823+Y)DIV N))THEN NXPLUSY:=N*X+Y ELSE BEGIN ARITHERROR:=TRUE;
NXPLUSY:=0;END;END;{103}FUNCTION XOVERN(X:SCALED;N:INTEGER):SCALED;
VAR NEGATE:BOOLEAN;BEGIN NEGATE:=FALSE;
IF N=0 THEN BEGIN ARITHERROR:=TRUE;XOVERN:=0;REMAINDER:=X;
END ELSE BEGIN IF N<0 THEN BEGIN X:=-X;N:=-N;NEGATE:=TRUE;END;
IF X>=0 THEN BEGIN XOVERN:=X DIV N;REMAINDER:=X MOD N;
END ELSE BEGIN XOVERN:=-((-X)DIV N);REMAINDER:=-((-X)MOD N);END;END;
IF NEGATE THEN REMAINDER:=-REMAINDER;END;{104}FUNCTION XNOVERD(X:SCALED;
N,D:INTEGER):SCALED;VAR POSITIVE:BOOLEAN;T,U,V:NONNEGATIVEI;
BEGIN IF X>=0 THEN POSITIVE:=TRUE ELSE BEGIN X:=-X;POSITIVE:=FALSE;END;
T:=(X MOD 32768)*N;U:=(X DIV 32768)*N+(T DIV 32768);
V:=(U MOD D)*32768+(T MOD 32768);
IF U DIV D>=32768 THEN ARITHERROR:=TRUE ELSE U:=32768*(U DIV D)+(V DIV D
);IF POSITIVE THEN BEGIN XNOVERD:=U;REMAINDER:=V MOD D;
END ELSE BEGIN XNOVERD:=-U;REMAINDER:=-(V MOD D);END;END;
{105}FUNCTION BADNESS(T,S:SCALED):HALFWORD;VAR R:INTEGER;
BEGIN IF T=0 THEN BADNESS:=0 ELSE IF S<=0 THEN BADNESS:=10000 ELSE BEGIN
IF T<=7230584 THEN R:=(T*297)DIV S ELSE IF S>=1663497 THEN R:=T DIV(S
DIV 297)ELSE R:=T;
IF R>1290 THEN BADNESS:=10000 ELSE BADNESS:=(R*R*R+131072)DIV 262144;
END;END;{111}{PROCEDURE PRINTMEMORYW(W:MEMORYWORD);
BEGIN PRINTINT(W.INT);PRINTCHAR(32);PRINTSCALED(W.INT);PRINTCHAR(32);
PRINTSCALED(ROUND(65536*W.GR));PRINTLN;PRINTINT(W.HH.LH);PRINTCHAR(61);
PRINTINT(W.HH.B0);PRINTCHAR(58);PRINTINT(W.HH.B1);PRINTCHAR(59);
PRINTINT(W.HH.RH);PRINTCHAR(32);PRINTINT(W.QQQQ.B0);PRINTCHAR(58);
PRINTINT(W.QQQQ.B1);PRINTCHAR(58);PRINTINT(W.QQQQ.B2);PRINTCHAR(58);
PRINTINT(W.QQQQ.B3);END;}{116}{275}PROCEDURE SHOWTOKENLIS(P,Q:INTEGER;
L:INTEGER);LABEL 10;VAR M,C:INTEGER;MATCHCHR:ASCIICODE;N:ASCIICODE;
BEGIN MATCHCHR:=35;N:=48;TALLY:=0;
WHILE(P<>0)AND(TALLY<L)DO BEGIN IF P=Q THEN{302}BEGIN FIRSTCOUNT:=TALLY;
TRICKCOUNT:=TALLY+1+ERRORLINE-HALFERRORLIN;
IF TRICKCOUNT<ERRORLINE THEN TRICKCOUNT:=ERRORLINE;END;
{276}IF(P<25000)OR(P>MEMEND)THEN BEGIN PRINTESC(177);GOTO 10;END;
IF MEM[P].HH.LH>=4096 THEN PRINTCS(MEM[P].HH.LH-4096)ELSE BEGIN M:=MEM[P
].HH.LH DIV 256;C:=MEM[P].HH.LH MOD 256;
IF(MEM[P].HH.LH<0)OR(C>127)THEN PRINTESC(368)ELSE{277}CASE M OF 2,3,4,7,
8,10,11,12:PRINT(C);
1:BEGIN IF(MEM[P].HH.RH>=25000)AND(MEM[P].HH.RH<=MEMEND)THEN IF MEM[MEM[
P].HH.RH].HH.LH DIV 256=14 THEN PRINT(MATCHCHR);PRINT(C);END;
6:BEGIN PRINT(C);PRINT(C);END;5:BEGIN PRINT(MATCHCHR);
IF C<=9 THEN PRINTCHAR(C+48)ELSE BEGIN PRINTCHAR(33);GOTO 10;END;END;
13:BEGIN MATCHCHR:=C;PRINT(C);N:=N+1;PRINTCHAR(N);IF N>57 THEN GOTO 10;
END;14:PRINT(369);OTHERS:PRINTESC(368)END;END;P:=MEM[P].HH.RH;END;
IF P<>0 THEN PRINTESC(367);10:END;{288}PROCEDURE RUNAWAY;VAR P:HALFWORD;
BEGIN IF SCANNERSTATU>1 THEN BEGIN PRINTNL(385);
CASE SCANNERSTATU OF 2:BEGIN PRINT(386);P:=DEFREF;END;
3:BEGIN PRINT(387);P:=25003;END;4:BEGIN PRINT(388);P:=25004;END;END;
PRINTLN;SHOWTOKENLIS(MEM[P].HH.RH,0,ERRORLINE-10);END;END;
{117}FUNCTION GETAVAIL:HALFWORD;VAR P:HALFWORD;BEGIN P:=AVAIL;
IF P<>0 THEN AVAIL:=MEM[AVAIL].HH.RH ELSE IF MEMEND<MEMMAX THEN BEGIN
MEMEND:=MEMEND+1;P:=MEMEND;END ELSE BEGIN RUNAWAY;
OVERFLOW(166,MEMMAX-0);END;MEM[P].HH.RH:=0;DYNUSED:=DYNUSED+1;
GETAVAIL:=P;END;{119}PROCEDURE FLUSHLIST(P:HALFWORD);VAR Q:HALFWORD;
BEGIN WHILE P<>0 DO BEGIN Q:=MEM[P].HH.RH;BEGIN MEM[P].HH.RH:=AVAIL;
AVAIL:=P;DYNUSED:=DYNUSED-1;END;P:=Q;END;END;
{121}FUNCTION GETNODE(S:INTEGER):HALFWORD;LABEL 40,10;VAR P:HALFWORD;
Q:HALFWORD;R:INTEGER;BEGIN P:=ROVER;REPEAT{123}Q:=P+MEM[P].HH.LH;
WHILE(MEM[Q].HH.RH=262143)DO BEGIN IF Q=ROVER THEN ROVER:=MEM[Q+1].HH.RH
;MEM[MEM[Q+1].HH.RH+1].HH.LH:=MEM[Q+1].HH.LH;
MEM[MEM[Q+1].HH.LH+1].HH.RH:=MEM[Q+1].HH.RH;Q:=Q+MEM[Q].HH.LH;END;
R:=Q-S;IF R>P+1 THEN{124}BEGIN MEM[P].HH.LH:=R-P;ROVER:=P;GOTO 40;END;
IF(R=P)AND((MEM[P+1].HH.RH<>ROVER)OR(MEM[P+1].HH.LH<>ROVER))THEN{125}
BEGIN IF P=ROVER THEN ROVER:=MEM[P+1].HH.RH;
MEM[MEM[P+1].HH.RH+1].HH.LH:=MEM[P+1].HH.LH;
MEM[MEM[P+1].HH.LH+1].HH.RH:=MEM[P+1].HH.RH;ROVER:=MEM[P+1].HH.RH;
GOTO 40;END;MEM[P].HH.LH:=Q-P;P:=MEM[P+1].HH.RH;UNTIL P=ROVER;
IF S=1073741824 THEN BEGIN GETNODE:=262143;GOTO 10;END;
OVERFLOW(167,25000);40:MEM[R].HH.RH:=0;VARUSED:=VARUSED+S;
IF VARUSED>MAXVARUSED THEN MAXVARUSED:=VARUSED;GETNODE:=R;10:END;
{126}PROCEDURE FREENODE(P:HALFWORD;S:HALFWORD);VAR Q:HALFWORD;
BEGIN IF{158}(P<20)OR(P>=25000)THEN CONFUSION(168);MEM[P].HH.LH:=S;
MEM[P].HH.RH:=262143;Q:=MEM[ROVER+1].HH.LH;MEM[P+1].HH.LH:=Q;
MEM[P+1].HH.RH:=ROVER;MEM[ROVER+1].HH.LH:=P;MEM[Q+1].HH.RH:=P;
VARUSED:=VARUSED-S;END;{127}{PROCEDURE SORTAVAIL;VAR P,Q,R:HALFWORD;
OLDROVER:HALFWORD;BEGIN P:=GETNODE(1073741824);P:=MEM[ROVER+1].HH.RH;
MEM[ROVER+1].HH.RH:=262143;OLDROVER:=ROVER;
WHILE P<>OLDROVER DO[128]IF P<ROVER THEN BEGIN Q:=P;P:=MEM[Q+1].HH.RH;
MEM[Q+1].HH.RH:=ROVER;ROVER:=Q;END ELSE BEGIN Q:=ROVER;
WHILE MEM[Q+1].HH.RH<P DO Q:=MEM[Q+1].HH.RH;R:=MEM[P+1].HH.RH;
MEM[P+1].HH.RH:=MEM[Q+1].HH.RH;MEM[Q+1].HH.RH:=P;P:=R;END;P:=ROVER;
WHILE MEM[P+1].HH.RH<>262143 DO BEGIN MEM[MEM[P+1].HH.RH+1].HH.LH:=P;
P:=MEM[P+1].HH.RH;END;MEM[P+1].HH.RH:=ROVER;MEM[ROVER+1].HH.LH:=P;END;
}{132}FUNCTION NEWNULLBOX:HALFWORD;VAR P:HALFWORD;BEGIN P:=GETNODE(7);
MEM[P].HH.B0:=0;MEM[P].HH.B1:=0;MEM[P+1].INT:=0;MEM[P+2].INT:=0;
MEM[P+3].INT:=0;MEM[P+4].INT:=0;MEM[P+5].HH.RH:=0;MEM[P+5].HH.B0:=0;
MEM[P+5].HH.B1:=0;MEM[P+6].GR:=0.0;NEWNULLBOX:=P;END;
{135}FUNCTION NEWRULE:HALFWORD;VAR P:HALFWORD;BEGIN P:=GETNODE(4);
MEM[P].HH.B0:=2;MEM[P].HH.B1:=0;MEM[P+1].INT:=-1073741824;
MEM[P+2].INT:=-1073741824;MEM[P+3].INT:=-1073741824;NEWRULE:=P;END;
{140}FUNCTION NEWLIGATURE(F,C:QUARTERWORD;Q:HALFWORD):HALFWORD;
VAR P:HALFWORD;BEGIN P:=GETNODE(2);MEM[P].HH.B0:=6;MEM[P].HH.B1:=0;
MEM[P+1].HH.B0:=F;MEM[P+1].HH.B1:=C;MEM[P+1].HH.RH:=Q;NEWLIGATURE:=P;
END;{141}FUNCTION NEWDISC:HALFWORD;VAR P:HALFWORD;BEGIN P:=GETNODE(2);
MEM[P].HH.B0:=7;MEM[P].HH.B1:=0;MEM[P+1].HH.LH:=0;MEM[P+1].HH.RH:=0;
NEWDISC:=P;END;{143}FUNCTION NEWMATH(W:SCALED;S:SMALLNUMBER):HALFWORD;
VAR P:HALFWORD;BEGIN P:=GETNODE(2);MEM[P].HH.B0:=9;MEM[P].HH.B1:=S;
MEM[P+1].INT:=W;NEWMATH:=P;END;
{147}FUNCTION NEWSPEC(P:HALFWORD):HALFWORD;VAR Q:HALFWORD;
BEGIN Q:=GETNODE(4);MEM[Q]:=MEM[P];MEM[Q].HH.RH:=0;
MEM[Q+1].INT:=MEM[P+1].INT;MEM[Q+2].INT:=MEM[P+2].INT;
MEM[Q+3].INT:=MEM[P+3].INT;NEWSPEC:=Q;END;
{148}FUNCTION NEWPARAMGLUE(N:SMALLNUMBER):HALFWORD;VAR P:HALFWORD;
Q:HALFWORD;BEGIN P:=GETNODE(2);MEM[P].HH.B0:=10;MEM[P].HH.B1:=N+1;
MEM[P+1].HH.RH:=0;Q:={218}EQTB[2368+N].HH.RH;MEM[P+1].HH.LH:=Q;
MEM[Q].HH.RH:=MEM[Q].HH.RH+1;NEWPARAMGLUE:=P;END;
{149}FUNCTION NEWGLUE(Q:HALFWORD):HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(2);MEM[P].HH.B0:=10;MEM[P].HH.B1:=0;MEM[P+1].HH.RH:=0;
MEM[P+1].HH.LH:=Q;MEM[Q].HH.RH:=MEM[Q].HH.RH+1;NEWGLUE:=P;END;
{150}FUNCTION NEWSKIPPARAM(N:SMALLNUMBER):HALFWORD;VAR P:HALFWORD;
BEGIN TEMPPTR:=NEWSPEC({218}EQTB[2368+N].HH.RH);P:=NEWGLUE(TEMPPTR);
MEM[TEMPPTR].HH.RH:=0;MEM[P].HH.B1:=N+1;NEWSKIPPARAM:=P;END;
{152}FUNCTION NEWKERN(W:SCALED):HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(2);MEM[P].HH.B0:=11;MEM[P].HH.B1:=0;MEM[P+1].INT:=W;
NEWKERN:=P;END;{154}FUNCTION NEWPENALTY(M:INTEGER):HALFWORD;
VAR P:HALFWORD;BEGIN P:=GETNODE(2);MEM[P].HH.B0:=12;MEM[P].HH.B1:=0;
MEM[P+1].INT:=M;NEWPENALTY:=P;END;
{163}{PROCEDURE CHECKMEM(PRINTLOCS:BOOLEAN);LABEL 31,32;
VAR P,Q:HALFWORD;CLOBBERED:BOOLEAN;
BEGIN FOR P:=0 TO MEMEND DO FREE[P]:=FALSE;[164]P:=AVAIL;Q:=0;
CLOBBERED:=FALSE;
WHILE P<>0 DO BEGIN IF(P>MEMEND)OR(P<25014)THEN CLOBBERED:=TRUE ELSE IF
FREE[P]THEN CLOBBERED:=TRUE;IF CLOBBERED THEN BEGIN PRINTNL(169);
PRINTINT(Q);GOTO 31;END;FREE[P]:=TRUE;Q:=P;P:=MEM[Q].HH.RH;END;31:;
[165]P:=ROVER;Q:=0;CLOBBERED:=FALSE;
REPEAT IF(P>=25000)OR(P<20)THEN CLOBBERED:=TRUE ELSE IF(MEM[P+1].HH.RH>=
25000)OR(MEM[P+1].HH.RH<20)THEN CLOBBERED:=TRUE ELSE IF NOT((MEM[P].HH.
RH=262143))OR(MEM[P].HH.LH<2)OR(P+MEM[P].HH.LH>25000)OR(MEM[MEM[P+1].HH.
RH+1].HH.LH<>P)THEN CLOBBERED:=TRUE;
IF CLOBBERED THEN BEGIN PRINTNL(170);PRINTINT(Q);GOTO 32;END;
FOR Q:=P TO P+MEM[P].HH.LH-1 DO BEGIN IF FREE[Q]THEN BEGIN PRINTNL(171);
PRINTINT(Q);GOTO 32;END;FREE[Q]:=TRUE;END;Q:=P;P:=MEM[P+1].HH.RH;
UNTIL P=ROVER;32:;[166]P:=0;
WHILE P<=25000 DO BEGIN IF(MEM[P].HH.RH=262143)THEN BEGIN PRINTNL(172);
PRINTINT(P);END;WHILE(P<=25000)AND NOT FREE[P]DO P:=P+1;
WHILE(P<=25000)AND FREE[P]DO P:=P+1;END;
IF PRINTLOCS THEN[167]BEGIN PRINTNL(173);
FOR P:=0 TO MEMEND DO IF NOT FREE[P]AND((P>WASMEMEND)OR WASFREE[P])THEN
BEGIN PRINTCHAR(32);PRINTINT(P);END;END;
FOR P:=0 TO MEMEND DO WASFREE[P]:=FREE[P];WASMEMEND:=MEMEND;END;
}{168}{PROCEDURE SEARCHMEM(P:HALFWORD);VAR Q:INTEGER;
BEGIN FOR Q:=0 TO MEMEND DO BEGIN IF MEM[Q].HH.RH=P THEN BEGIN PRINTNL(
174);PRINTINT(Q);PRINTCHAR(41);END;
IF MEM[Q].HH.LH=P THEN BEGIN PRINTNL(175);PRINTINT(Q);PRINTCHAR(41);END;
END;
[240]FOR Q:=1 TO 3158 DO BEGIN IF EQTB[Q].HH.RH=P THEN BEGIN PRINTNL(318
);PRINTINT(Q);PRINTCHAR(41);END;END;
[268]IF SAVEPTR>0 THEN FOR Q:=0 TO SAVEPTR-1 DO BEGIN IF SAVESTACK[Q].HH
.RH=P THEN BEGIN PRINTNL(359);PRINTINT(Q);PRINTCHAR(41);END;END;
[873]FOR Q:=0 TO 307 DO BEGIN IF HYPHLIST[Q]=P THEN BEGIN PRINTNL(743);
PRINTINT(Q);PRINTCHAR(41);END;END;END;
}{170}PROCEDURE SHORTDISPLAY(P:INTEGER);VAR N:INTEGER;
BEGIN WHILE P>0 DO BEGIN IF(P>25000)THEN BEGIN IF P<=MEMEND THEN BEGIN
IF MEM[P].HH.B0<>FONTINSHORTD THEN BEGIN IF(MEM[P].HH.B0<0)OR(MEM[P].HH.
B0>FONTMAX)THEN PRINTCHAR(42)ELSE SPRINTCS(FONTIDENT[MEM[P].HH.B0]);
PRINTCHAR(32);FONTINSHORTD:=MEM[P].HH.B0;END;PRINTASCII(MEM[P].HH.B1);
END;END ELSE{171}CASE MEM[P].HH.B0 OF 0,1,3,8,4,5,13:PRINT(176);
2:PRINTCHAR(124);10:IF MEM[P+1].HH.LH<>0 THEN PRINTCHAR(32);
9:PRINTCHAR(36);6:SHORTDISPLAY(MEM[P+1].HH.RH);
7:BEGIN SHORTDISPLAY(MEM[P+1].HH.LH);SHORTDISPLAY(MEM[P+1].HH.RH);
N:=MEM[P].HH.B1;
WHILE N>0 DO BEGIN IF MEM[P].HH.RH<>0 THEN P:=MEM[P].HH.RH;N:=N-1;END;
END;OTHERS:END;P:=MEM[P].HH.RH;END;END;
{172}PROCEDURE PRINTFONTAND(P:INTEGER);
BEGIN IF P>MEMEND THEN PRINTESC(177)ELSE BEGIN IF(MEM[P].HH.B0<0)OR(MEM[
P].HH.B0>FONTMAX)THEN PRINTCHAR(42)ELSE SPRINTCS(FONTIDENT[MEM[P].HH.B0]
);PRINTCHAR(32);PRINTASCII(MEM[P].HH.B1);END;END;
PROCEDURE PRINTMARK(P:INTEGER);BEGIN PRINTCHAR(123);
IF(P<25000)OR(P>MEMEND)THEN PRINTESC(177)ELSE SHOWTOKENLIS(MEM[P].HH.RH,
0,MAXPRINTLINE-10);PRINTCHAR(125);END;PROCEDURE PRINTRULEDIM(D:SCALED);
BEGIN IF(D=-1073741824)THEN PRINTCHAR(42)ELSE PRINTSCALED(D);END;
{173}PROCEDURE PRINTGLUE(D:SCALED;ORDER:INTEGER;S:STRNUMBER);
BEGIN PRINTSCALED(D);
IF(ORDER<0)OR(ORDER>3)THEN PRINT(178)ELSE IF ORDER>0 THEN BEGIN PRINT(
179);WHILE ORDER>1 DO BEGIN PRINTCHAR(108);ORDER:=ORDER-1;END;
END ELSE IF S<>0 THEN PRINT(S);END;{174}PROCEDURE PRINTSPEC(P:HALFWORD;
S:STRNUMBER);
BEGIN IF(P<0)OR(P>=25000)THEN PRINTCHAR(42)ELSE BEGIN PRINTSCALED(MEM[P
+1].INT);IF S<>0 THEN PRINT(S);IF MEM[P+2].INT<>0 THEN BEGIN PRINT(180);
PRINTGLUE(MEM[P+2].INT,MEM[P].HH.B0,S);END;
IF MEM[P+3].INT<>0 THEN BEGIN PRINT(181);
PRINTGLUE(MEM[P+3].INT,MEM[P].HH.B1,S);END;END;END;
{175}{643}PROCEDURE PRINTFAMANDC(P:HALFWORD);BEGIN PRINTESC(329);
PRINTINT(MEM[P].HH.B0);PRINTCHAR(32);PRINTASCII(MEM[P].HH.B1);END;
PROCEDURE PRINTDELIMIT(P:HALFWORD);VAR A:INTEGER;
BEGIN A:=MEM[P].QQQQ.B0*256+MEM[P].QQQQ.B1;
A:=A*4096+MEM[P].QQQQ.B2*256+MEM[P].QQQQ.B3;
IF A<0 THEN PRINTINT(A)ELSE PRINTOCTAL(A);END;{644}PROCEDURE SHOWINFO;
FORWARD;PROCEDURE PRINTSUBSIDI(P:HALFWORD;C:ASCIICODE);
BEGIN IF(POOLPTR-STRSTART[STRPTR])>=DEPTHTHRESHO THEN BEGIN IF MEM[P].HH
.RH<>0 THEN PRINT(182);END ELSE BEGIN BEGIN STRPOOL[POOLPTR]:=C;
POOLPTR:=POOLPTR+1;END;TEMPPTR:=P;CASE MEM[P].HH.RH OF 1:BEGIN PRINTLN;
PRINTCURRENT;PRINTFAMANDC(P);END;2:SHOWINFO;
3:IF MEM[P].HH.LH=0 THEN BEGIN PRINTLN;PRINTCURRENT;PRINT(666);
END ELSE SHOWINFO;OTHERS:END;POOLPTR:=POOLPTR-1;END;END;
{646}PROCEDURE PRINTSTYLE(C:INTEGER);
BEGIN CASE C DIV 2 OF 0:PRINTESC(667);1:PRINTESC(668);2:PRINTESC(669);
3:PRINTESC(670);OTHERS:PRINT(671)END;END;
{219}PROCEDURE PRINTSKIPPAR(N:INTEGER);BEGIN CASE N OF 0:PRINTESC(237);
1:PRINTESC(238);2:PRINTESC(239);3:PRINTESC(240);4:PRINTESC(241);
5:PRINTESC(242);6:PRINTESC(243);7:PRINTESC(244);8:PRINTESC(245);
9:PRINTESC(246);10:PRINTESC(247);11:PRINTESC(248);12:PRINTESC(249);
13:PRINTESC(250);14:PRINTESC(251);15:PRINTESC(252);16:PRINTESC(253);
OTHERS:PRINT(254)END;END;{178}PROCEDURE SHOWNODELIST(P:HALFWORD);
LABEL 10;VAR N:INTEGER;
BEGIN IF(POOLPTR-STRSTART[STRPTR])>DEPTHTHRESHO THEN BEGIN IF P>0 THEN
PRINT(182);GOTO 10;END;N:=0;WHILE P>0 DO BEGIN PRINTLN;PRINTCURRENT;
IF P>MEMEND THEN BEGIN PRINT(183);GOTO 10;END;N:=N+1;
IF N>BREADTHMAX THEN BEGIN PRINT(184);GOTO 10;END;
{179}IF(P>25000)THEN PRINTFONTAND(P)ELSE CASE MEM[P].HH.B0 OF 0,1,13:{
180}BEGIN IF MEM[P].HH.B0=0 THEN PRINTESC(104)ELSE IF MEM[P].HH.B0=1
THEN PRINTESC(118)ELSE PRINTESC(186);PRINT(187);
PRINTSCALED(MEM[P+3].INT);PRINTCHAR(43);PRINTSCALED(MEM[P+2].INT);
PRINT(188);PRINTSCALED(MEM[P+1].INT);
IF MEM[P].HH.B0=13 THEN{181}BEGIN IF MEM[P].HH.B1<>0 THEN BEGIN PRINT(
152);PRINTINT(MEM[P].HH.B1+1);PRINT(190);END;
IF MEM[P+6].INT<>0 THEN BEGIN PRINT(191);
PRINTGLUE(MEM[P+6].INT,MEM[P+5].HH.B1,0);END;
IF MEM[P+4].INT<>0 THEN BEGIN PRINT(192);
PRINTGLUE(MEM[P+4].INT,MEM[P+5].HH.B0,0);END;
END ELSE BEGIN{182}IF(MEM[P+6].GR<>0.0)AND(MEM[P+5].HH.B0<>0)THEN BEGIN
PRINT(193);IF MEM[P+5].HH.B0=2 THEN PRINT(194);
IF ABS(MEM[P+6].INT)<1048576 THEN PRINT(195)ELSE IF ABS(MEM[P+6].GR)>
20000.0 THEN BEGIN IF MEM[P+6].GR>0.0 THEN PRINTCHAR(62)ELSE PRINT(196);
PRINTGLUE(20000*65536,MEM[P+5].HH.B1,0);
END ELSE PRINTGLUE(ROUND(MEM[P+6].GR*65536),MEM[P+5].HH.B1,0);END;
IF MEM[P+4].INT<>0 THEN BEGIN PRINT(189);PRINTSCALED(MEM[P+4].INT);END;
END;BEGIN BEGIN STRPOOL[POOLPTR]:=46;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+5].HH.RH);POOLPTR:=POOLPTR-1;END;END;
2:{183}BEGIN PRINTESC(197);PRINTRULEDIM(MEM[P+3].INT);PRINTCHAR(43);
PRINTRULEDIM(MEM[P+2].INT);PRINT(188);PRINTRULEDIM(MEM[P+1].INT);END;
3:{184}BEGIN PRINTESC(198);PRINTINT(MEM[P].HH.B1);PRINT(199);
PRINTSCALED(MEM[P+1].INT);BEGIN BEGIN STRPOOL[POOLPTR]:=46;
POOLPTR:=POOLPTR+1;END;SHOWNODELIST(MEM[P+2].INT);POOLPTR:=POOLPTR-1;
END;END;8:{1276}CASE MEM[P].HH.B1 OF 0:BEGIN PRINTESC(1090);
PRINTINT(MEM[P+1].HH.LH);PRINTCHAR(61);
PRINTFILENAM(MEM[P+1].HH.RH,MEM[P+2].HH.LH,MEM[P+2].HH.RH);END;
1:BEGIN PRINTESC(1091);PRINTINT(MEM[P+1].HH.LH);
PRINTMARK(MEM[P+1].HH.RH);END;2:BEGIN PRINTESC(1092);
PRINTINT(MEM[P+1].HH.LH);END;3:BEGIN PRINTESC(1093);
PRINTMARK(MEM[P+1].HH.RH);END;OTHERS:PRINT(1097)END;
10:{185}IF MEM[P].HH.B1>=100 THEN{186}BEGIN PRINTCHAR(92);
IF MEM[P].HH.B1=101 THEN PRINTCHAR(99)ELSE IF MEM[P].HH.B1=102 THEN
PRINTCHAR(120);PRINT(204);PRINTSPEC(MEM[P+1].HH.LH,0);
BEGIN BEGIN STRPOOL[POOLPTR]:=46;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+1].HH.RH);POOLPTR:=POOLPTR-1;END;
END ELSE BEGIN PRINTESC(200);
IF MEM[P].HH.B1<>0 THEN BEGIN PRINTCHAR(40);
IF MEM[P].HH.B1<98 THEN PRINTSKIPPAR(MEM[P].HH.B1-1)ELSE IF MEM[P].HH.B1
=98 THEN PRINTESC(201)ELSE PRINTESC(202);PRINTCHAR(41);END;
IF MEM[P].HH.B1<>98 THEN BEGIN PRINTCHAR(32);
IF MEM[P].HH.B1<98 THEN PRINTSPEC(MEM[P+1].HH.LH,0)ELSE PRINTSPEC(MEM[P
+1].HH.LH,203);END;END;
11:{187}IF MEM[P].HH.B1=0 THEN BEGIN PRINTESC(205);
PRINTSCALED(MEM[P+1].INT);END ELSE BEGIN PRINTESC(206);
PRINTSCALED(MEM[P+1].INT);PRINT(203);END;9:{188}BEGIN PRINTESC(207);
IF MEM[P].HH.B1=0 THEN PRINT(208)ELSE PRINT(209);
IF MEM[P+1].INT<>0 THEN BEGIN PRINT(210);PRINTSCALED(MEM[P+1].INT);END;
END;6:{189}BEGIN PRINTFONTAND(P+1);PRINT(211);
FONTINSHORTD:=MEM[P+1].HH.B0;SHORTDISPLAY(MEM[P+1].HH.RH);PRINTCHAR(41);
END;12:{190}BEGIN PRINTESC(212);PRINTINT(MEM[P+1].INT);END;
7:{191}BEGIN PRINTESC(213);IF MEM[P].HH.B1>0 THEN BEGIN PRINT(214);
PRINTINT(MEM[P].HH.B1);END;BEGIN BEGIN STRPOOL[POOLPTR]:=46;
POOLPTR:=POOLPTR+1;END;SHOWNODELIST(MEM[P+1].HH.LH);POOLPTR:=POOLPTR-1;
END;BEGIN STRPOOL[POOLPTR]:=124;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+1].HH.RH);POOLPTR:=POOLPTR-1;END;
4:{192}BEGIN PRINTESC(215);PRINTMARK(MEM[P+1].INT);END;
5:{193}BEGIN PRINTESC(216);BEGIN BEGIN STRPOOL[POOLPTR]:=46;
POOLPTR:=POOLPTR+1;END;SHOWNODELIST(MEM[P+1].INT);POOLPTR:=POOLPTR-1;
END;END;{642}14:PRINTSTYLE(MEM[P].HH.B1);
15,16,17,18,19,20,21,22,23,26,25,28,27,29,30:{647}BEGIN CASE MEM[P].HH.
B0 OF 15:PRINTESC(672);16:PRINTESC(673);17:PRINTESC(674);
18:PRINTESC(675);19:PRINTESC(676);20:PRINTESC(677);21:PRINTESC(678);
22:PRINTESC(679);26:PRINTESC(680);25:PRINTESC(681);28:PRINTESC(354);
23:BEGIN PRINTESC(346);PRINTDELIMIT(P+4);END;27:BEGIN PRINTESC(323);
PRINTFAMANDC(P+4);END;29:BEGIN PRINTESC(682);PRINTDELIMIT(P+1);END;
30:BEGIN PRINTESC(683);PRINTDELIMIT(P+1);END;END;
IF MEM[P].HH.B1<>0 THEN PRINTESC(338);
IF MEM[P].HH.B0<29 THEN PRINTSUBSIDI(P+1,46);PRINTSUBSIDI(P+2,40);
PRINTSUBSIDI(P+3,91);END;24:{648}BEGIN PRINTESC(684);PRINT(685);
IF MEM[P+1].INT=1073741824 THEN PRINT(686)ELSE PRINTSCALED(MEM[P+1].INT)
;
IF(MEM[P+4].QQQQ.B0<>0)OR(MEM[P+4].QQQQ.B1<>0)OR(MEM[P+4].QQQQ.B2<>0)OR(
MEM[P+4].QQQQ.B3<>0)THEN BEGIN PRINT(687);PRINTDELIMIT(P+4);END;
IF(MEM[P+5].QQQQ.B0<>0)OR(MEM[P+5].QQQQ.B1<>0)OR(MEM[P+5].QQQQ.B2<>0)OR(
MEM[P+5].QQQQ.B3<>0)THEN BEGIN PRINT(688);PRINTDELIMIT(P+5);END;
PRINTSUBSIDI(P+2,92);PRINTSUBSIDI(P+3,47);END;OTHERS:PRINT(185)END;
P:=MEM[P].HH.RH;END;10:END;{194}PROCEDURE SHOWBOX(P:HALFWORD);
BEGIN{226}DEPTHTHRESHO:=EQTB[3873].INT;BREADTHMAX:=EQTB[3872].INT;
IF BREADTHMAX<=0 THEN BREADTHMAX:=5;
IF POOLPTR+DEPTHTHRESHO>=POOLSIZE THEN DEPTHTHRESHO:=POOLSIZE-POOLPTR-1;
SHOWNODELIST(P);PRINTLN;END;{196}PROCEDURE DELETETOKENR(P:HALFWORD);
BEGIN IF MEM[P].HH.LH=0 THEN FLUSHLIST(P)ELSE MEM[P].HH.LH:=MEM[P].HH.LH
-1;END;{197}PROCEDURE DELETEGLUERE(P:HALFWORD);
BEGIN IF MEM[P].HH.RH=0 THEN FREENODE(P,4)ELSE MEM[P].HH.RH:=MEM[P].HH.
RH-1;END;{198}PROCEDURE FLUSHNODELIS(P:HALFWORD);LABEL 30;
VAR Q:HALFWORD;BEGIN WHILE P<>0 DO BEGIN Q:=MEM[P].HH.RH;
IF(P>25000)THEN BEGIN MEM[P].HH.RH:=AVAIL;AVAIL:=P;DYNUSED:=DYNUSED-1;
END ELSE BEGIN CASE MEM[P].HH.B0 OF 0,1,13:BEGIN FLUSHNODELIS(MEM[P+5].
HH.RH);FREENODE(P,7);GOTO 30;END;2:BEGIN FREENODE(P,4);GOTO 30;END;
3:BEGIN FLUSHNODELIS(MEM[P+2].INT);FREENODE(P,3);GOTO 30;END;
8:{1278}BEGIN CASE MEM[P].HH.B1 OF 0:FREENODE(P,3);
1,3:BEGIN DELETETOKENR(MEM[P+1].HH.RH);FREENODE(P,2);GOTO 30;END;
2:FREENODE(P,2);OTHERS:CONFUSION(1099)END;GOTO 30;END;
10:BEGIN DELETEGLUERE(MEM[P+1].HH.LH);FLUSHNODELIS(MEM[P+1].HH.RH);END;
11,9,12:;6:FLUSHNODELIS(MEM[P+1].HH.RH);4:DELETETOKENR(MEM[P+1].INT);
7:BEGIN FLUSHNODELIS(MEM[P+1].HH.LH);FLUSHNODELIS(MEM[P+1].HH.RH);END;
5:FLUSHNODELIS(MEM[P+1].INT);{649}14:;
15,16,17,18,19,20,21,22,23,26,25,28,27:BEGIN IF MEM[P+1].HH.RH>=2 THEN
FLUSHNODELIS(MEM[P+1].HH.LH);
IF MEM[P+2].HH.RH>=2 THEN FLUSHNODELIS(MEM[P+2].HH.LH);
IF MEM[P+3].HH.RH>=2 THEN FLUSHNODELIS(MEM[P+3].HH.LH);
IF MEM[P].HH.B0=23 THEN FREENODE(P,5)ELSE IF MEM[P].HH.B0=27 THEN
FREENODE(P,5)ELSE FREENODE(P,4);GOTO 30;END;29,30:BEGIN FREENODE(P,4);
GOTO 30;END;24:BEGIN FLUSHNODELIS(MEM[P+2].HH.LH);
FLUSHNODELIS(MEM[P+3].HH.LH);FREENODE(P,6);GOTO 30;END;
OTHERS:CONFUSION(217)END;FREENODE(P,2);30:END;P:=Q;END;END;
{200}FUNCTION COPYNODELIST(P:HALFWORD):HALFWORD;VAR H:HALFWORD;
Q:HALFWORD;R:HALFWORD;WORDS:0..5;BEGIN H:=GETAVAIL;Q:=H;
WHILE P<>0 DO BEGIN{201}WORDS:=1;
IF(P>25000)THEN R:=GETAVAIL ELSE{202}CASE MEM[P].HH.B0 OF 0,1,13:BEGIN R
:=GETNODE(7);MEM[R+6]:=MEM[P+6];MEM[R+5]:=MEM[P+5];
MEM[R+5].HH.RH:=COPYNODELIST(MEM[P+5].HH.RH);WORDS:=5;END;
2:BEGIN R:=GETNODE(4);WORDS:=4;END;3:BEGIN R:=GETNODE(3);
MEM[R+2].INT:=COPYNODELIST(MEM[P+2].INT);WORDS:=2;END;
8:{1277}CASE MEM[P].HH.B1 OF 0:BEGIN R:=GETNODE(3);WORDS:=3;END;
1,3:BEGIN R:=GETNODE(2);
MEM[MEM[P+1].HH.RH].HH.LH:=MEM[MEM[P+1].HH.RH].HH.LH+1;WORDS:=2;END;
2:BEGIN R:=GETNODE(2);WORDS:=2;END;OTHERS:CONFUSION(1098)END;
10:BEGIN R:=GETNODE(2);
MEM[MEM[P+1].HH.LH].HH.RH:=MEM[MEM[P+1].HH.LH].HH.RH+1;
MEM[R+1].HH.LH:=MEM[P+1].HH.LH;
MEM[R+1].HH.RH:=COPYNODELIST(MEM[P+1].HH.RH);END;
11,9,12:BEGIN R:=GETNODE(2);WORDS:=2;END;6:BEGIN R:=GETNODE(2);
MEM[R+1]:=MEM[P+1];MEM[R+1].HH.RH:=COPYNODELIST(MEM[P+1].HH.RH);END;
7:BEGIN R:=GETNODE(2);MEM[R+1].HH.LH:=COPYNODELIST(MEM[P+1].HH.LH);
MEM[R+1].HH.RH:=COPYNODELIST(MEM[P+1].HH.RH);END;4:BEGIN R:=GETNODE(2);
MEM[MEM[P+1].INT].HH.LH:=MEM[MEM[P+1].INT].HH.LH+1;WORDS:=2;END;
OTHERS:CONFUSION(218)END;WHILE WORDS>0 DO BEGIN WORDS:=WORDS-1;
MEM[R+WORDS]:=MEM[P+WORDS];END;MEM[Q].HH.RH:=R;Q:=R;P:=MEM[P].HH.RH;END;
MEM[Q].HH.RH:=0;Q:=MEM[H].HH.RH;BEGIN MEM[H].HH.RH:=AVAIL;AVAIL:=H;
DYNUSED:=DYNUSED-1;END;COPYNODELIST:=Q;END;
{207}PROCEDURE PRINTMODE(M:INTEGER);
BEGIN IF M>0 THEN CASE M DIV(93)OF 0:PRINT(219);1:PRINT(220);
2:PRINT(221);END ELSE CASE(-M)DIV(93)OF 0:PRINT(222);1:PRINT(223);
2:PRINT(207);END;PRINT(224);END;{212}PROCEDURE PUSHNEST;
BEGIN IF NESTPTR>MAXNESTSTACK THEN BEGIN MAXNESTSTACK:=NESTPTR;
IF NESTPTR=NESTSIZE THEN OVERFLOW(225,NESTSIZE);END;
NEST[NESTPTR]:=CURLIST;NESTPTR:=NESTPTR+1;CURLIST.HEADFIELD:=GETAVAIL;
CURLIST.TAILFIELD:=CURLIST.HEADFIELD;CURLIST.ALREADYFIELD:=0;
CURLIST.MLFIELD:=LINE;END;{213}PROCEDURE POPNEST;
BEGIN BEGIN MEM[CURLIST.HEADFIELD].HH.RH:=AVAIL;
AVAIL:=CURLIST.HEADFIELD;DYNUSED:=DYNUSED-1;END;NESTPTR:=NESTPTR-1;
CURLIST:=NEST[NESTPTR];END;{214}PROCEDURE SHOWACTIVITI;
VAR P:0..NESTSIZE;M:-187..187;A:INTEGER;Q,R:HALFWORD;T:INTEGER;
BEGIN NEST[NESTPTR]:=CURLIST;PRINTNL(226);PRINTLN;
FOR P:=NESTPTR DOWNTO 0 DO BEGIN M:=NEST[P].MODEFIELD;
A:=NEST[P].AUXFIELD;PRINTNL(227);PRINTMODE(M);PRINT(228);
PRINTINT(ABS(NEST[P].MLFIELD));IF NEST[P].MLFIELD<0 THEN PRINT(229);
IF P=0 THEN BEGIN{923}IF 25002<>PAGETAIL THEN BEGIN PRINTNL(765);
IF OUTPUTACTIVE THEN PRINT(766);SHOWBOX(MEM[25002].HH.RH);
IF PAGECONTENTS>0 THEN BEGIN PRINTNL(767);PRINTSCALED(PAGESOFAR[1]);
IF PAGESOFAR[2]<>0 THEN BEGIN PRINT(180);PRINTSCALED(PAGESOFAR[2]);
PRINT(226);END;IF PAGESOFAR[3]<>0 THEN BEGIN PRINT(180);
PRINTSCALED(PAGESOFAR[3]);PRINT(179);END;
IF PAGESOFAR[4]<>0 THEN BEGIN PRINT(180);PRINTSCALED(PAGESOFAR[4]);
PRINT(768);END;IF PAGESOFAR[5]<>0 THEN BEGIN PRINT(180);
PRINTSCALED(PAGESOFAR[5]);PRINT(769);END;
IF PAGESOFAR[6]<>0 THEN BEGIN PRINT(181);PRINTSCALED(PAGESOFAR[6]);END;
PRINTNL(770);PRINTSCALED(PAGESIZE);R:=MEM[25000].HH.RH;
WHILE R<>25000 DO BEGIN PRINTLN;PRINTESC(198);T:=MEM[R].HH.B1;
PRINTINT(T);PRINT(771);T:=XOVERN(MEM[R+1].INT,1000)*EQTB[3887+T].INT;
PRINTSCALED(T);IF MEM[R].HH.B0=1 THEN BEGIN Q:=25002;T:=0;
REPEAT Q:=MEM[Q].HH.RH;
IF(MEM[Q].HH.B0=3)AND(MEM[Q].HH.B1=MEM[R].HH.B1)THEN T:=T+1;
UNTIL Q=MEM[R+3].HH.LH;PRINT(772);PRINTINT(T);PRINT(773);END;
R:=MEM[R].HH.RH;END;END;END;IF MEM[25001].HH.RH<>0 THEN PRINTNL(230);
END;SHOWBOX(MEM[NEST[P].HEADFIELD].HH.RH);
CASE ABS(M)DIV(93)OF 0:BEGIN PRINTNL(231);
IF A<=-65536000 THEN PRINT(232)ELSE PRINTSCALED(A);
IF NEST[P].ALREADYFIELD<>0 THEN BEGIN PRINT(233);
PRINTINT(NEST[P].ALREADYFIELD);PRINT(234);
IF NEST[P].ALREADYFIELD<>1 THEN PRINTCHAR(115);END;END;
1:BEGIN PRINTNL(235);PRINTINT(A);END;2:IF A<>0 THEN BEGIN PRINT(236);
SHOWBOX(A);END;END;END;END;{227}PROCEDURE PRINTPARAM(N:INTEGER);
BEGIN CASE N OF 0:PRINTESC(260);1:PRINTESC(261);2:PRINTESC(262);
3:PRINTESC(263);4:PRINTESC(264);5:PRINTESC(265);6:PRINTESC(266);
7:PRINTESC(267);8:PRINTESC(268);9:PRINTESC(269);10:PRINTESC(270);
11:PRINTESC(271);12:PRINTESC(272);13:PRINTESC(273);14:PRINTESC(274);
15:PRINTESC(275);16:PRINTESC(276);17:PRINTESC(277);18:PRINTESC(278);
19:PRINTESC(279);20:PRINTESC(280);21:PRINTESC(281);22:PRINTESC(282);
23:PRINTESC(283);24:PRINTESC(284);25:PRINTESC(285);26:PRINTESC(286);
27:PRINTESC(287);28:PRINTESC(288);29:PRINTESC(289);30:PRINTESC(290);
31:PRINTESC(291);32:PRINTESC(292);33:PRINTESC(293);34:PRINTESC(294);
35:PRINTESC(295);36:PRINTESC(296);37:PRINTESC(297);OTHERS:PRINT(298)END;
END;{231}PROCEDURE FIXDATEANDTI;VAR T:INTEGER;DATE:INTEGER;G:BOOLEAN;
BEGIN CALLI(131137,,T,T,G);DATE:=T DIV 262144;
EQTB[3868].INT:=(T MOD 262144)DIV 60;EQTB[3869].INT:=(DATE MOD 31)+1;
EQTB[3870].INT:=((DATE DIV 31)MOD 12)+1;
EQTB[3871].INT:=(DATE DIV(31*12))+1964;END;{232}PROCEDURE BEGINDIAGNOS;
BEGIN OLDSETTING:=SELECTOR;
IF(EQTB[3877].INT=0)AND(SELECTOR=19)THEN SELECTOR:=SELECTOR-1;END;
PROCEDURE ENDDIAGNOSTI(BLANKLINE:BOOLEAN);BEGIN PRINTNL(226);
IF BLANKLINE THEN PRINTLN;SELECTOR:=OLDSETTING;END;
{234}PROCEDURE PRINTLENGTHP(N:INTEGER);BEGIN CASE N OF 0:PRINTESC(299);
1:PRINTESC(300);2:PRINTESC(301);3:PRINTESC(302);4:PRINTESC(303);
5:PRINTESC(304);6:PRINTESC(305);7:PRINTESC(306);8:PRINTESC(307);
9:PRINTESC(308);10:PRINTESC(309);11:PRINTESC(310);12:PRINTESC(311);
13:PRINTESC(312);14:PRINTESC(313);15:PRINTESC(314);16:PRINTESC(315);
17:PRINTESC(316);OTHERS:PRINT(317)END;END;
{244}FUNCTION IDLOOKUP(J,L:INTEGER):HALFWORD;LABEL 40;VAR H:INTEGER;
P:HALFWORD;K:HALFWORD;BEGIN{246}H:=BUFFER[J];
FOR K:=J+1 TO J+L-1 DO BEGIN H:=H+H+BUFFER[K];
WHILE H>=1777 DO H:=H-1777;END;P:=H+258;
WHILE TRUE DO BEGIN IF(HASH[P].RH>0)AND((STRSTART[HASH[P].RH+1]-STRSTART
[HASH[P].RH])=L)THEN IF STREQBUF(HASH[P].RH,J)THEN GOTO 40;
IF HASH[P].LH=0 THEN BEGIN IF NONEWCONTROL THEN P:=2367 ELSE{245}BEGIN
IF HASH[P].RH>0 THEN BEGIN REPEAT IF(HASHUSED=258)THEN OVERFLOW(319,2100
);HASHUSED:=HASHUSED-1;UNTIL HASH[HASHUSED].RH=0;HASH[P].LH:=HASHUSED;
P:=HASHUSED;END;BEGIN IF POOLPTR+L>POOLSIZE THEN OVERFLOW(129,POOLSIZE);
END;FOR K:=J TO J+L-1 DO BEGIN STRPOOL[POOLPTR]:=BUFFER[K];
POOLPTR:=POOLPTR+1;END;HASH[P].RH:=MAKESTRING;CSCOUNT:=CSCOUNT+1;END;
GOTO 40;END;P:=HASH[P].LH;END;40:IDLOOKUP:=P;END;
{249}{PROCEDURE PRIMITIVE(S:STRNUMBER;C:QUARTERWORD;O:HALFWORD);
VAR K:POOLPOINTER;J:SMALLNUMBER;L:SMALLNUMBER;
BEGIN IF S<128 THEN CURVAL:=S+1 ELSE BEGIN K:=STRSTART[S];
L:=STRSTART[S+1]-K;FOR J:=0 TO L-1 DO BUFFER[J]:=STRPOOL[K+J];
CURVAL:=IDLOOKUP(0,L);BEGIN STRPTR:=STRPTR-1;POOLPTR:=STRSTART[STRPTR];
END;HASH[CURVAL].RH:=S;END;EQTB[CURVAL].HH.B1:=1;EQTB[CURVAL].HH.B0:=C;
EQTB[CURVAL].HH.RH:=O;END;}{259}PROCEDURE NEWSAVELEVEL(C:GROUPCODE);
BEGIN IF SAVEPTR>MAXSAVESTACK THEN BEGIN MAXSAVESTACK:=SAVEPTR;
IF MAXSAVESTACK>SAVESIZE-6 THEN OVERFLOW(356,SAVESIZE);END;
SAVESTACK[SAVEPTR].HH.B0:=2;SAVESTACK[SAVEPTR].HH.B1:=CURGROUP;
SAVESTACK[SAVEPTR].HH.RH:=CURBOUNDARY;
IF CURLEVEL=511 THEN OVERFLOW(357,511);CURBOUNDARY:=SAVEPTR;
CURLEVEL:=CURLEVEL+1;SAVEPTR:=SAVEPTR+1;CURGROUP:=C;END;
{260}PROCEDURE EQDESTROY(W:MEMORYWORD);VAR Q:HALFWORD;
BEGIN CASE W.HH.B0 OF 100,101,102,103:DELETETOKENR(W.HH.RH);
105:DELETEGLUERE(W.HH.RH);106:BEGIN Q:=W.HH.RH;
IF Q<>0 THEN FREENODE(Q,MEM[Q].HH.LH+MEM[Q].HH.LH+1);END;
107:FLUSHNODELIS(W.HH.RH);OTHERS:END;END;
{261}PROCEDURE EQSAVE(P:HALFWORD;L:QUARTERWORD);
BEGIN IF SAVEPTR>MAXSAVESTACK THEN BEGIN MAXSAVESTACK:=SAVEPTR;
IF MAXSAVESTACK>SAVESIZE-6 THEN OVERFLOW(356,SAVESIZE);END;
IF L=0 THEN SAVESTACK[SAVEPTR].HH.B0:=1 ELSE BEGIN SAVESTACK[SAVEPTR]:=
EQTB[P];SAVEPTR:=SAVEPTR+1;SAVESTACK[SAVEPTR].HH.B0:=0;END;
SAVESTACK[SAVEPTR].HH.B1:=L;SAVESTACK[SAVEPTR].HH.RH:=P;
SAVEPTR:=SAVEPTR+1;END;{262}PROCEDURE EQDEFINE(P:HALFWORD;T:QUARTERWORD;
E:HALFWORD);
BEGIN IF EQTB[P].HH.B1=CURLEVEL THEN EQDESTROY(EQTB[P])ELSE IF CURLEVEL>
1 THEN EQSAVE(P,EQTB[P].HH.B1);EQTB[P].HH.B1:=CURLEVEL;EQTB[P].HH.B0:=T;
EQTB[P].HH.RH:=E;END;{263}PROCEDURE EQWORDDEFINE(P:HALFWORD;W:INTEGER);
BEGIN IF XEQLEVEL[P]<>CURLEVEL THEN BEGIN EQSAVE(P,XEQLEVEL[P]);
XEQLEVEL[P]:=CURLEVEL;END;EQTB[P].INT:=W;END;
{264}PROCEDURE GEQDEFINE(P:HALFWORD;T:QUARTERWORD;E:HALFWORD);
BEGIN EQDESTROY(EQTB[P]);EQTB[P].HH.B1:=1;EQTB[P].HH.B0:=T;
EQTB[P].HH.RH:=E;END;PROCEDURE GEQWORDDEFIN(P:HALFWORD;W:INTEGER);
BEGIN EQTB[P].INT:=W;XEQLEVEL[P]:=1;END;{265}PROCEDURE UNSAVE;LABEL 30;
VAR P:HALFWORD;L:QUARTERWORD;
BEGIN IF CURLEVEL>1 THEN BEGIN CURLEVEL:=CURLEVEL-1;
{266}WHILE TRUE DO BEGIN SAVEPTR:=SAVEPTR-1;
IF SAVESTACK[SAVEPTR].HH.B0=2 THEN GOTO 30;P:=SAVESTACK[SAVEPTR].HH.RH;
IF SAVESTACK[SAVEPTR].HH.B0=0 THEN BEGIN L:=SAVESTACK[SAVEPTR].HH.B1;
SAVEPTR:=SAVEPTR-1;END ELSE SAVESTACK[SAVEPTR]:=EQTB[2367];
{267}IF P<3849 THEN IF EQTB[P].HH.B1=1 THEN EQDESTROY(SAVESTACK[SAVEPTR]
)ELSE BEGIN EQDESTROY(EQTB[P]);EQTB[P]:=SAVESTACK[SAVEPTR];
END ELSE IF XEQLEVEL[P]<>1 THEN BEGIN EQTB[P]:=SAVESTACK[SAVEPTR];
XEQLEVEL[P]:=L;END;END;30:CURGROUP:=SAVESTACK[SAVEPTR].HH.B1;
CURBOUNDARY:=SAVESTACK[SAVEPTR].HH.RH;END ELSE CONFUSION(358);END;
{271}PROCEDURE PREPAREMAG;
BEGIN IF(MAGSET>0)AND(EQTB[3865].INT<>MAGSET)THEN BEGIN PRINTNL(360);
PRINTINT(EQTB[3865].INT);PRINT(361);PRINTNL(362);BEGIN HELPPTR:=2;
HELPLINE[1]:=363;HELPLINE[0]:=364;END;INTERROR(MAGSET);
GEQWORDDEFIN(3865,MAGSET);END;
IF(EQTB[3865].INT<=0)OR(EQTB[3865].INT>32768)THEN BEGIN PRINTNL(365);
BEGIN HELPPTR:=1;HELPLINE[0]:=366;END;INTERROR(EQTB[3865].INT);
GEQWORDDEFIN(3865,1000);END;MAGSET:=EQTB[3865].INT;END;
{278}PROCEDURE TOKENSHOW(P:HALFWORD);
BEGIN IF P<>0 THEN SHOWTOKENLIS(MEM[P].HH.RH,0,1000);END;
{280}PROCEDURE PRINTCMDCHR(CMD:QUARTERWORD;CHRCODE:HALFWORD);
BEGIN CASE CMD OF 1:BEGIN PRINT(370);PRINTASCII(CHRCODE);END;
2:BEGIN PRINT(371);PRINTASCII(CHRCODE);END;3:BEGIN PRINT(372);
PRINTASCII(CHRCODE);END;
4:IF CHRCODE=128 THEN PRINTESC(373)ELSE BEGIN PRINT(374);
PRINTASCII(CHRCODE);END;5:PRINTESC(375);6:BEGIN PRINT(376);
PRINTASCII(CHRCODE);END;7:BEGIN PRINT(377);PRINTASCII(CHRCODE);END;
8:BEGIN PRINT(378);PRINTASCII(CHRCODE);END;9:PRINT(379);10:PRINT(380);
11:BEGIN PRINT(381);PRINTASCII(CHRCODE);END;12:BEGIN PRINT(382);
PRINTASCII(CHRCODE);END;{221}72:PRINTSKIPPAR(CHRCODE);
{224}69:CASE CHRCODE OF 2898:PRINTESC(255);2899:PRINTESC(256);
2900:PRINTESC(257);2901:PRINTESC(258);OTHERS:PRINTESC(259)END;
{229}70:PRINTPARAM(CHRCODE);{236}71:PRINTLENGTHP(CHRCODE);
{251}44:PRINTESC(323);73:PRINTESC(350);41:PRINTESC(345);
16:PRINTESC(324);97:PRINTESC(325);84:PRINTESC(330);15:PRINTESC(326);
68:PRINTESC(327);62:PRINTESC(32);94:PRINTESC(328);59:PRINTESC(331);
60:PRINTESC(332);33:PRINTESC(333);37:PRINTESC(334);40:PRINTESC(335);
20:PRINTESC(336);38:PRINTESC(198);43:PRINTESC(47);66:PRINTESC(337);
50:PRINTESC(338);19:PRINTESC(215);45:PRINTESC(339);81:PRINTESC(341);
17:PRINTESC(340);35:PRINTESC(342);53:PRINTESC(201);61:PRINTESC(343);
63:PRINTESC(346);82:PRINTESC(347);0:PRINTESC(348);89:PRINTESC(349);
78:PRINTESC(329);90:PRINTESC(344);25:PRINTESC(351);26:PRINTESC(352);
39:PRINTESC(216);34:PRINTESC(353);54:PRINTESC(354);36:PRINTESC(355);
{316}13:PRINTESC(409);{358}99:CASE CHRCODE OF 1:PRINTESC(444);
2:PRINTESC(445);3:PRINTESC(446);4:PRINTESC(447);OTHERS:PRINTESC(443)END;
{382}65:IF CHRCODE=0 THEN PRINTESC(474)ELSE IF CHRCODE=1 THEN PRINTESC(
475)ELSE IF CHRCODE=2 THEN PRINTESC(476)ELSE PRINTESC(477);
74:PRINTESC(478);64:IF CHRCODE=0 THEN PRINTESC(479)ELSE PRINTESC(480);
{387}67:IF CHRCODE=1 THEN PRINTESC(484)ELSE PRINTESC(483);
{435}98:IF CHRCODE=0 THEN PRINTESC(553)ELSE PRINTESC(554);
{450}95:CASE CHRCODE OF 1:PRINTESC(568);2:PRINTESC(569);3:PRINTESC(570);
4:PRINTESC(571);5:PRINTESC(572);6:PRINTESC(573);7:PRINTESC(574);
8:PRINTESC(575);9:PRINTESC(576);10:PRINTESC(577);11:PRINTESC(578);
12:PRINTESC(579);OTHERS:PRINTESC(567)END;
{454}96:IF CHRCODE=1 THEN PRINTESC(580)ELSE IF CHRCODE=3 THEN PRINTESC(
581)ELSE PRINTESC(582);
{987}14:IF CHRCODE=1 THEN PRINTESC(807)ELSE PRINTESC(806);
{995}27:CASE CHRCODE OF 4:PRINTESC(809);0:PRINTESC(810);1:PRINTESC(811);
2:PRINTESC(812);OTHERS:PRINTESC(813)END;
28:CASE CHRCODE OF 4:PRINTESC(814);0:PRINTESC(815);1:PRINTESC(816);
2:PRINTESC(817);OTHERS:PRINTESC(818)END;29:PRINTESC(202);
30:PRINTESC(205);31:PRINTESC(206);
{1007}23:IF CHRCODE=1 THEN PRINTESC(838)ELSE PRINTESC(839);
24:IF CHRCODE=1 THEN PRINTESC(840)ELSE PRINTESC(841);
22:CASE CHRCODE OF 0:PRINTESC(842);1:PRINTESC(843);2:PRINTESC(844);
3:PRINTESC(845);4:PRINTESC(846);5:PRINTESC(847);OTHERS:PRINTESC(848);
END;
32:IF CHRCODE=100 THEN PRINTESC(850)ELSE IF CHRCODE=101 THEN PRINTESC(
851)ELSE IF CHRCODE=102 THEN PRINTESC(852)ELSE PRINTESC(849);
{1025}42:IF CHRCODE=0 THEN PRINTESC(867)ELSE PRINTESC(866);
{1051}46:IF CHRCODE=1 THEN PRINTESC(45)ELSE PRINTESC(213);
{1082}47:IF CHRCODE=1 THEN PRINTESC(911)ELSE PRINTESC(910);
{1095}49:CASE CHRCODE OF 15:PRINTESC(672);16:PRINTESC(673);
17:PRINTESC(674);18:PRINTESC(675);19:PRINTESC(676);20:PRINTESC(677);
21:PRINTESC(678);25:PRINTESC(681);OTHERS:PRINTESC(680)END;
{1107}52:PRINTSTYLE(CHRCODE);{1114}51:CASE CHRCODE OF 1:PRINTESC(929);
2:PRINTESC(930);3:PRINTESC(931);4:PRINTESC(932);5:PRINTESC(933);
OTHERS:PRINTESC(928)END;
{1123}48:IF CHRCODE=29 THEN PRINTESC(682)ELSE PRINTESC(683);
{1143}79:IF CHRCODE=1 THEN PRINTESC(953)ELSE IF CHRCODE=2 THEN PRINTESC(
954)ELSE PRINTESC(955);
83:IF CHRCODE=0 THEN PRINTESC(956)ELSE IF CHRCODE=1 THEN PRINTESC(957)
ELSE IF CHRCODE=2 THEN PRINTESC(958)ELSE PRINTESC(959);
{1154}80:IF CHRCODE<>0 THEN PRINTESC(973)ELSE PRINTESC(972);
{1157}18:BEGIN PRINTESC(340);PRINTOCTAL(CHRCODE);END;
{1163}75:IF CHRCODE=3209 THEN PRINTESC(976)ELSE IF CHRCODE=3337 THEN
PRINTESC(977)ELSE IF CHRCODE=3465 THEN PRINTESC(978)ELSE IF CHRCODE=3593
THEN PRINTESC(979)ELSE IF CHRCODE=3721 THEN PRINTESC(980)ELSE PRINTESC(
981);76:PRINTSIZE(CHRCODE-3160);
{1168}85,86,87,88:BEGIN CASE CMD OF 85:PRINTESC(1002);86:PRINTESC(1003);
87:PRINTESC(1004);OTHERS:PRINTESC(1005)END;
IF CHRCODE=0 THEN PRINT(474)ELSE IF CHRCODE=1 THEN PRINT(475)ELSE IF
CHRCODE=2 THEN PRINT(476)ELSE PRINT(477);END;
{1179}91:IF CHRCODE=1 THEN PRINTESC(1014)ELSE PRINTESC(1013);
{1187}77:BEGIN PRINT(1024);PRINT(FONTNAME[CHRCODE]);
IF FONTSIZE[CHRCODE]<>FONTDSIZE[CHRCODE]THEN BEGIN PRINT(552);
PRINTSCALED(FONTSIZE[CHRCODE]);PRINT(516);END;END;
{1189}92:CASE CHRCODE OF 0:PRINTESC(1025);1:PRINTESC(1026);
2:PRINTESC(1027);OTHERS:PRINTESC(1028)END;
{1194}58:IF CHRCODE=0 THEN PRINTESC(1030)ELSE PRINTESC(1029);
{1199}56:IF CHRCODE=0 THEN PRINTESC(1031)ELSE PRINTESC(1032);
{1207}55:IF CHRCODE=3465 THEN PRINTESC(1038)ELSE PRINTESC(1039);
{1212}21:CASE CHRCODE OF 1:PRINTESC(1041);2:PRINTESC(1042);
3:PRINTESC(1043);OTHERS:PRINTESC(1040)END;{1215}93:PRINT(1052);
100:PRINT(1053);101:PRINTESC(1054);102:PRINTESC(1055);
103:PRINTESC(1056);104:PRINTESC(1057);
{1267}57:CASE CHRCODE OF 0:PRINTESC(1090);1:PRINTESC(1091);
2:PRINTESC(1092);3:PRINTESC(1093);4:PRINTESC(1094);
OTHERS:PRINT(1095)END;OTHERS:PRINT(383)END;END;
{281}PROCEDURE SHOWCURCMDCH;BEGIN BEGINDIAGNOS;PRINTNL(123);
IF CURLIST.MODEFIELD<>SHOWNMODE THEN BEGIN PRINTMODE(CURLIST.MODEFIELD);
PRINT(384);SHOWNMODE:=CURLIST.MODEFIELD;END;PRINTCMDCHR(CURCMD,CURCHR);
PRINTCHAR(125);ENDDIAGNOSTI(FALSE);END;{293}PROCEDURE SHOWCONTEXT;
LABEL 30;VAR OLDSETTING:0..21;{297}I:0..BUFSIZE;J:0..BUFSIZE;
L:0..HALFERRORLIN;M:INTEGER;N:0..ERRORLINE;P:INTEGER;Q:INTEGER;
BEGIN BASEPTR:=INPUTPTR;INPUTSTACK[BASEPTR]:=CURINPUT;
WHILE TRUE DO BEGIN CURINPUT:=INPUTSTACK[BASEPTR];
{294}IF(BASEPTR=INPUTPTR)OR(CURINPUT.STATEFIELD<>0)OR(CURINPUT.
INDEXFIELD<>3)OR(CURINPUT.LOCFIELD<>0)THEN BEGIN TALLY:=0;
OLDSETTING:=SELECTOR;
IF CURINPUT.STATEFIELD<>0 THEN BEGIN{295}IF CURINPUT.NAMEFIELD<=16 THEN
IF(CURINPUT.NAMEFIELD=0)THEN IF BASEPTR=0 THEN PRINTNL(389)ELSE PRINTNL(
390)ELSE BEGIN PRINTNL(391);PRINTINT(CURINPUT.NAMEFIELD-1);
PRINTCHAR(62);END ELSE BEGIN IF PAGE>1 THEN BEGIN PRINTNL(392);
PRINTINT(PAGE);PRINT(393);END ELSE PRINTNL(394);PRINTINT(LINE);END;
PRINTCHAR(32);{300}BEGIN L:=TALLY;TALLY:=0;SELECTOR:=20;
TRICKCOUNT:=1000000;END;
IF BUFFER[CURINPUT.LIMITFIELD]=13 THEN J:=CURINPUT.LIMITFIELD ELSE J:=
CURINPUT.LIMITFIELD+1;
IF J>0 THEN FOR I:=CURINPUT.STARTFIELD TO J-1 DO BEGIN IF I=CURINPUT.
LOCFIELD THEN BEGIN FIRSTCOUNT:=TALLY;
TRICKCOUNT:=TALLY+1+ERRORLINE-HALFERRORLIN;
IF TRICKCOUNT<ERRORLINE THEN TRICKCOUNT:=ERRORLINE;END;PRINT(BUFFER[I]);
END;END ELSE BEGIN{296}CASE CURINPUT.INDEXFIELD OF 0:PRINTNL(395);
1,2:PRINTNL(396);
3:IF CURINPUT.LOCFIELD=0 THEN PRINTNL(397)ELSE PRINTNL(398);
4:PRINTNL(399);5:BEGIN PRINTLN;PRINTCS(CURINPUT.NAMEFIELD);END;
6:PRINTNL(400);7:PRINTNL(401);8:PRINTNL(402);9:PRINTNL(403);
10:PRINTNL(404);11:PRINTNL(405);OTHERS:PRINTNL(63)END;
{301}BEGIN L:=TALLY;TALLY:=0;SELECTOR:=20;TRICKCOUNT:=1000000;END;
IF CURINPUT.INDEXFIELD<5 THEN SHOWTOKENLIS(CURINPUT.STARTFIELD,CURINPUT.
LOCFIELD,100000)ELSE SHOWTOKENLIS(MEM[CURINPUT.STARTFIELD].HH.RH,
CURINPUT.LOCFIELD,100000);END;SELECTOR:=OLDSETTING;
{299}IF TRICKCOUNT=1000000 THEN BEGIN FIRSTCOUNT:=TALLY;
TRICKCOUNT:=TALLY+1+ERRORLINE-HALFERRORLIN;
IF TRICKCOUNT<ERRORLINE THEN TRICKCOUNT:=ERRORLINE;END;
IF TALLY<TRICKCOUNT THEN M:=TALLY-FIRSTCOUNT ELSE M:=TRICKCOUNT-
FIRSTCOUNT;IF L+FIRSTCOUNT<=HALFERRORLIN THEN BEGIN P:=0;
N:=L+FIRSTCOUNT;END ELSE BEGIN PRINT(406);
P:=L+FIRSTCOUNT-HALFERRORLIN+3;N:=HALFERRORLIN;END;
FOR Q:=P TO FIRSTCOUNT-1 DO PRINTCHAR(TRICKBUF[Q MOD ERRORLINE]);
PRINTLN;FOR Q:=1 TO N DO PRINTCHAR(32);
IF M+N<=ERRORLINE THEN P:=FIRSTCOUNT+M ELSE P:=FIRSTCOUNT+(ERRORLINE-N-3
);FOR Q:=FIRSTCOUNT TO P-1 DO PRINTCHAR(TRICKBUF[Q MOD ERRORLINE]);
IF M+N>ERRORLINE THEN PRINT(406);END;
IF(CURINPUT.STATEFIELD<>0)THEN IF(CURINPUT.NAMEFIELD>16)OR(BASEPTR=0)
THEN GOTO 30;BASEPTR:=BASEPTR-1;END;30:CURINPUT:=INPUTSTACK[INPUTPTR];
END;{303}PROCEDURE PUSHINPUT;
BEGIN IF INPUTPTR>MAXINSTACK THEN BEGIN MAXINSTACK:=INPUTPTR;
IF INPUTPTR=STACKSIZE THEN OVERFLOW(407,STACKSIZE);END;
INPUTSTACK[INPUTPTR]:=CURINPUT;INPUTPTR:=INPUTPTR+1;END;
{304}PROCEDURE POPINPUT;BEGIN INPUTPTR:=INPUTPTR-1;
CURINPUT:=INPUTSTACK[INPUTPTR];END;
{305}PROCEDURE BEGINTOKENLI(P:HALFWORD;T:QUARTERWORD);BEGIN PUSHINPUT;
CURINPUT.STATEFIELD:=0;CURINPUT.STARTFIELD:=P;CURINPUT.INDEXFIELD:=T;
IF T>=5 THEN BEGIN MEM[P].HH.LH:=MEM[P].HH.LH+1;
IF T=5 THEN CURINPUT.LIMITFIELD:=PARAMPTR ELSE CURINPUT.LOCFIELD:=MEM[P]
.HH.RH;END ELSE CURINPUT.LOCFIELD:=P;END;{306}PROCEDURE ENDTOKENLIST;
BEGIN IF CURINPUT.INDEXFIELD>=3 THEN BEGIN IF CURINPUT.INDEXFIELD<=4
THEN FLUSHLIST(CURINPUT.STARTFIELD)ELSE BEGIN DELETETOKENR(CURINPUT.
STARTFIELD);
IF CURINPUT.INDEXFIELD=5 THEN WHILE PARAMPTR>CURINPUT.LIMITFIELD DO
BEGIN PARAMPTR:=PARAMPTR-1;FLUSHLIST(PARAMSTACK[PARAMPTR]);END;END;
END ELSE IF CURINPUT.INDEXFIELD=1 THEN ALIGNSTATE:=0;POPINPUT;
BEGIN IF INTERRUPT<>0 THEN PAUSEFORINST;END;END;
{307}PROCEDURE BACKINPUT;VAR P:HALFWORD;
BEGIN WHILE(CURINPUT.STATEFIELD=0)AND(CURINPUT.LOCFIELD=0)DO
ENDTOKENLIST;P:=GETAVAIL;MEM[P].HH.LH:=CURTOK;
IF CURTOK<768 THEN IF CURTOK<512 THEN ALIGNSTATE:=ALIGNSTATE-1 ELSE
ALIGNSTATE:=ALIGNSTATE+1;BEGINTOKENLI(P,3);END;{308}PROCEDURE BACKERROR;
BEGIN OKTOINTERRUP:=FALSE;BACKINPUT;OKTOINTERRUP:=TRUE;ERROR;END;
PROCEDURE INSERROR;BEGIN OKTOINTERRUP:=FALSE;BACKINPUT;
CURINPUT.INDEXFIELD:=4;OKTOINTERRUP:=TRUE;ERROR;END;
{309}PROCEDURE BEGINFILEREA;
BEGIN IF INOPEN=MAXINOPEN THEN OVERFLOW(408,MAXINOPEN);
IF FIRST=BUFSIZE THEN OVERFLOW(128,BUFSIZE);INOPEN:=INOPEN+1;PUSHINPUT;
CURINPUT.INDEXFIELD:=INOPEN;LINESTACK[CURINPUT.INDEXFIELD]:=LINE;
CURINPUT.STARTFIELD:=FIRST;CURINPUT.STATEFIELD:=1;CURINPUT.NAMEFIELD:=0;
PAGESTACK[CURINPUT.INDEXFIELD]:=PAGE;END;{310}PROCEDURE ENDFILEREADI;
BEGIN FIRST:=CURINPUT.STARTFIELD;PAGE:=PAGESTACK[CURINPUT.INDEXFIELD];
LINE:=LINESTACK[CURINPUT.INDEXFIELD];
IF CURINPUT.NAMEFIELD>16 THEN ACLOSE(INPUTFILE[CURINPUT.INDEXFIELD]);
POPINPUT;INOPEN:=INOPEN-1;END;{311}PROCEDURE CLEARFORERRO;
BEGIN WHILE(CURINPUT.STATEFIELD<>0)AND(CURINPUT.NAMEFIELD=0)AND(INPUTPTR
>0)AND(CURINPUT.LOCFIELD>CURINPUT.LIMITFIELD)DO ENDFILEREADI;PRINTLN;
BREAKIN(TERMIN,TRUE);END;{317}PROCEDURE CHECKOUTERVA;VAR P:HALFWORD;
Q:HALFWORD;
BEGIN IF SCANNERSTATU<>0 THEN BEGIN{318}IF CSPTR<>0 THEN BEGIN P:=
GETAVAIL;MEM[P].HH.LH:=4096+CSPTR;BEGINTOKENLI(P,3);CURCMD:=10;
CURCHR:=32;END;IF SCANNERSTATU>1 THEN{319}BEGIN RUNAWAY;
IF CSPTR=0 THEN PRINTNL(417)ELSE BEGIN CSPTR:=0;PRINTNL(418);END;
PRINT(419);{320}P:=GETAVAIL;CASE SCANNERSTATU OF 2:BEGIN PRINT(425);
MEM[P].HH.LH:=637;END;3:BEGIN PRINT(426);MEM[P].HH.LH:=PARTOKEN;
LONGSTATE:=102;END;4:BEGIN PRINT(427);MEM[P].HH.LH:=637;Q:=P;
P:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[P].HH.LH:=6455;END;END;
BEGINTOKENLI(P,4);PRINT(420);SPRINTCS(WARNINGINDEX);BEGIN HELPPTR:=4;
HELPLINE[3]:=421;HELPLINE[2]:=422;HELPLINE[1]:=423;HELPLINE[0]:=424;END;
DELETIONSALL:=FALSE;ERROR;DELETIONSALL:=TRUE;
END ELSE BEGIN PRINTNL(410);PRINTCMDCHR(95,CURIF);PRINT(411);
PRINTINT(SKIPLINE);IF SKIPPAGE>1 THEN BEGIN PRINT(412);
PRINTINT(SKIPPAGE);END;BEGIN HELPPTR:=3;HELPLINE[2]:=413;
HELPLINE[1]:=414;HELPLINE[0]:=415;END;
IF CSPTR<>0 THEN CSPTR:=0 ELSE HELPLINE[2]:=416;CURTOK:=6458;INSERROR;
END;END;END;{321}PROCEDURE OPENLOGFILE;FORWARD;PROCEDURE FIRMUPTHELIN;
FORWARD;{322}PROCEDURE GETNEXT;LABEL 20,25,21,26,40,10;VAR K:0..BUFSIZE;
T:HALFWORD;BEGIN 20:CSPTR:=0;
IF CURINPUT.STATEFIELD<>0 THEN{324}BEGIN 25:IF CURINPUT.LOCFIELD<=
CURINPUT.LIMITFIELD THEN BEGIN CURCHR:=BUFFER[CURINPUT.LOCFIELD];
CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;
21:CURCMD:=EQTB[3209+CURCHR].HH.RH;
{325}CASE CURINPUT.STATEFIELD+CURCMD OF{326}10,26,42,27,43:GOTO 25;
1,17,33:{335}BEGIN IF CURINPUT.LOCFIELD>CURINPUT.LIMITFIELD THEN CSPTR:=
257 ELSE BEGIN 26:K:=CURINPUT.LOCFIELD;CURCHR:=BUFFER[K];K:=K+1;
IF(EQTB[3209+CURCHR].HH.RH=11)AND(K<=CURINPUT.LIMITFIELD)THEN{337}BEGIN
REPEAT CURCHR:=BUFFER[K];K:=K+1;
UNTIL(EQTB[3209+CURCHR].HH.RH<>11)OR(K>CURINPUT.LIMITFIELD);
{336}BEGIN IF(BUFFER[K]=CURCHR)AND(EQTB[3209+CURCHR].HH.RH=7)AND(K<
CURINPUT.LIMITFIELD)THEN BEGIN CURCHR:=BUFFER[K+1];
IF(CURCHR<=95)AND(CURCHR>=63)THEN BEGIN IF CURCHR>63 THEN BUFFER[K-1]:=
CURCHR-64 ELSE BUFFER[K-1]:=127;
CURINPUT.LIMITFIELD:=CURINPUT.LIMITFIELD-2;FIRST:=FIRST-2;
WHILE K<=CURINPUT.LIMITFIELD DO BEGIN BUFFER[K]:=BUFFER[K+2];K:=K+1;END;
GOTO 26;END;END;END;IF EQTB[3209+BUFFER[K-1]].HH.RH<>11 THEN K:=K-1;
IF K>CURINPUT.LOCFIELD+1 THEN BEGIN CSPTR:=IDLOOKUP(CURINPUT.LOCFIELD,K-
CURINPUT.LOCFIELD);CURINPUT.LOCFIELD:=K;GOTO 40;END;
END ELSE{336}BEGIN IF(BUFFER[K]=CURCHR)AND(EQTB[3209+CURCHR].HH.RH=7)AND
(K<CURINPUT.LIMITFIELD)THEN BEGIN CURCHR:=BUFFER[K+1];
IF(CURCHR<=95)AND(CURCHR>=63)THEN BEGIN IF CURCHR>63 THEN BUFFER[K-1]:=
CURCHR-64 ELSE BUFFER[K-1]:=127;
CURINPUT.LIMITFIELD:=CURINPUT.LIMITFIELD-2;FIRST:=FIRST-2;
WHILE K<=CURINPUT.LIMITFIELD DO BEGIN BUFFER[K]:=BUFFER[K+2];K:=K+1;END;
GOTO 26;END;END;END;CSPTR:=1+BUFFER[CURINPUT.LOCFIELD];
CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;END;40:CURCMD:=EQTB[CSPTR].HH.B0;
CURCHR:=EQTB[CSPTR].HH.RH;CURINPUT.STATEFIELD:=17;
IF CURCMD>=102 THEN CHECKOUTERVA;END;
14,30,46:{334}BEGIN CSPTR:=CURCHR+129;CURCMD:=EQTB[CSPTR].HH.B0;
CURCHR:=EQTB[CSPTR].HH.RH;CURINPUT.STATEFIELD:=1;
IF CURCMD>=102 THEN CHECKOUTERVA;END;
8,24,40:{333}BEGIN IF(CURCHR=BUFFER[CURINPUT.LOCFIELD])AND(CURINPUT.
LOCFIELD<CURINPUT.LIMITFIELD)THEN IF(BUFFER[CURINPUT.LOCFIELD+1]<=95)AND
(BUFFER[CURINPUT.LOCFIELD+1]>=63)THEN BEGIN IF BUFFER[CURINPUT.LOCFIELD
+1]=63 THEN CURCHR:=127 ELSE CURCHR:=BUFFER[CURINPUT.LOCFIELD+1]-64;
CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+2;GOTO 21;END;
CURINPUT.STATEFIELD:=1;END;16,32,48:{327}BEGIN PRINTNL(428);
BEGIN HELPPTR:=2;HELPLINE[1]:=429;HELPLINE[0]:=430;END;
DELETIONSALL:=FALSE;ERROR;DELETIONSALL:=TRUE;GOTO 25;END;
{328}11:{330}BEGIN CURINPUT.STATEFIELD:=17;CURCHR:=32;END;
6:{329}BEGIN CURINPUT.STATEFIELD:=33;
CURINPUT.LOCFIELD:=CURINPUT.LIMITFIELD+1;CURCMD:=10;CURCHR:=32;END;
22,15,31,47:{331}BEGIN CURINPUT.STATEFIELD:=33;
CURINPUT.LOCFIELD:=CURINPUT.LIMITFIELD+1;GOTO 25;END;
38:{332}BEGIN CURINPUT.LOCFIELD:=CURINPUT.LIMITFIELD+1;CSPTR:=PARLOC;
CURCMD:=EQTB[CSPTR].HH.B0;CURCHR:=EQTB[CSPTR].HH.RH;
IF CURCMD>=102 THEN CHECKOUTERVA;END;2:ALIGNSTATE:=ALIGNSTATE+1;
18,34:BEGIN CURINPUT.STATEFIELD:=1;ALIGNSTATE:=ALIGNSTATE+1;END;
3:ALIGNSTATE:=ALIGNSTATE-1;19,35:BEGIN CURINPUT.STATEFIELD:=1;
ALIGNSTATE:=ALIGNSTATE-1;END;
20,21,23,25,28,29,36,37,39,41,44,45:CURINPUT.STATEFIELD:=1;OTHERS:END;
END ELSE BEGIN{340}IF CURINPUT.NAMEFIELD>16 THEN{341}BEGIN LINE:=LINE+1;
FIRST:=CURINPUT.STARTFIELD;
IF INPUTLN(INPUTFILE[CURINPUT.INDEXFIELD])THEN FIRMUPTHELIN ELSE IF
CURINPUT.LIMITFIELD<>CURINPUT.STARTFIELD THEN CURINPUT.LIMITFIELD:=
CURINPUT.STARTFIELD ELSE BEGIN PRINTCHAR(41);BREAK(TERMOUT);
ENDFILEREADI;CHECKOUTERVA;GOTO 20;END;BUFFER[CURINPUT.LIMITFIELD]:=13;
FIRST:=CURINPUT.LIMITFIELD+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
END ELSE BEGIN IF NOT(CURINPUT.NAMEFIELD=0)THEN BEGIN CURCMD:=0;
CURCHR:=0;GOTO 10;END;IF INPUTPTR>0 THEN BEGIN ENDFILEREADI;GOTO 20;END;
IF SELECTOR<18 THEN OPENLOGFILE;
IF INTERACTION>1 THEN BEGIN IF CURINPUT.LIMITFIELD=CURINPUT.STARTFIELD
THEN PRINTNL(431);PRINTLN;FIRST:=CURINPUT.STARTFIELD;BEGIN PRINT(42);
TERMINPUT;END;CURINPUT.LIMITFIELD:=LAST;BUFFER[CURINPUT.LIMITFIELD]:=13;
FIRST:=LAST+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
END ELSE FATALERROR(432);END;BEGIN IF INTERRUPT<>0 THEN PAUSEFORINST;
END;GOTO 25;END;
END ELSE{338}IF CURINPUT.LOCFIELD<>0 THEN BEGIN T:=MEM[CURINPUT.LOCFIELD
].HH.LH;CURINPUT.LOCFIELD:=MEM[CURINPUT.LOCFIELD].HH.RH;
IF T>=4096 THEN BEGIN CSPTR:=T-4096;CURCMD:=EQTB[CSPTR].HH.B0;
CURCHR:=EQTB[CSPTR].HH.RH;IF CURCMD>=102 THEN CHECKOUTERVA;
END ELSE BEGIN CURCMD:=T DIV 256;CURCHR:=T MOD 256;
CASE CURCMD OF 1:ALIGNSTATE:=ALIGNSTATE+1;2:ALIGNSTATE:=ALIGNSTATE-1;
5:{339}BEGIN BEGINTOKENLI(PARAMSTACK[CURINPUT.LIMITFIELD+CURCHR-1],0);
GOTO 20;END;OTHERS:END;END;END ELSE BEGIN ENDTOKENLIST;GOTO 20;END;
{323}IF CURCMD<=5 THEN IF CURCMD>=4 THEN IF ALIGNSTATE=0 THEN{733}BEGIN
IF SCANNERSTATU=4 THEN FATALERROR(713);CURCMD:=MEM[CURALIGN+5].HH.LH;
MEM[CURALIGN+5].HH.LH:=CURCHR;
IF CURCMD=61 THEN BEGINTOKENLI(25010,2)ELSE BEGINTOKENLI(MEM[CURALIGN+2]
.INT,2);ALIGNSTATE:=1000000;GOTO 20;END;10:END;
{342}PROCEDURE FIRMUPTHELIN;VAR K:0..BUFSIZE;
BEGIN CURINPUT.LIMITFIELD:=LAST;
IF(EQTB[3876].INT<>0)AND(INTERACTION>1)AND(BUFFER[CURINPUT.STARTFIELD]<>
12)THEN BEGIN PRINTLN;
IF CURINPUT.STARTFIELD=CURINPUT.LIMITFIELD THEN BEGIN BUFFER[CURINPUT.
STARTFIELD]:=32;CURINPUT.LIMITFIELD:=CURINPUT.LIMITFIELD+1;END;
SELECTOR:=SELECTOR-1;
FOR K:=CURINPUT.STARTFIELD TO CURINPUT.LIMITFIELD-1 DO BEGIN PRINTCHAR(
BUFFER[K]);PTWR1W(0,ORD(XCHR[BUFFER[K]]));;END;PRINT(433);
FIRST:=CURINPUT.STARTFIELD;IF NOT INPUTLN(TERMIN)THEN FATALERROR(133);
IF LAST>FIRST THEN FOR K:=FIRST TO LAST-1 DO PRINTCHAR(BUFFER[K]);
CURINPUT.LIMITFIELD:=LAST;PRINTLN;SELECTOR:=SELECTOR+1;END;END;
{344}PROCEDURE GETTOKEN;BEGIN NONEWCONTROL:=FALSE;GETNEXT;
NONEWCONTROL:=TRUE;
IF CSPTR=0 THEN CURTOK:=(CURCMD*256)+CURCHR ELSE CURTOK:=4096+CSPTR;END;
{345}{362}PROCEDURE MACROCALL;LABEL 10,22,30,31,40;VAR R:HALFWORD;
P:HALFWORD;Q:HALFWORD;S:HALFWORD;T:HALFWORD;U,V:HALFWORD;
RBRACEPTR:HALFWORD;N:SMALLNUMBER;UNBALANCE:HALFWORD;M:HALFWORD;
REFCOUNT:HALFWORD;SAVESCANNERS:SMALLNUMBER;SAVEWARNINGI:HALFWORD;
BEGIN SAVESCANNERS:=SCANNERSTATU;SAVEWARNINGI:=WARNINGINDEX;
WARNINGINDEX:=CSPTR;REFCOUNT:=CURCHR;R:=MEM[REFCOUNT].HH.RH;N:=0;
IF EQTB[3878].INT<>0 THEN{373}BEGIN BEGINDIAGNOS;PRINTLN;
PRINTCS(WARNINGINDEX);TOKENSHOW(REFCOUNT);ENDDIAGNOSTI(FALSE);END;
IF MEM[R].HH.LH<>3584 THEN{364}BEGIN SCANNERSTATU:=3;UNBALANCE:=0;
LONGSTATE:=EQTB[CSPTR].HH.B0;
IF LONGSTATE>=102 THEN LONGSTATE:=LONGSTATE-2;
REPEAT IF(MEM[R].HH.LH>3583)OR(MEM[R].HH.LH<3328)THEN S:=0 ELSE BEGIN S
:=MEM[R].HH.RH;R:=S;P:=25003;MEM[P].HH.RH:=0;M:=0;END;{365}22:GETTOKEN;
IF CURTOK=MEM[R].HH.LH THEN{366}BEGIN R:=MEM[R].HH.RH;
IF(MEM[R].HH.LH>=3328)AND(MEM[R].HH.LH<=3584)THEN BEGIN IF CURTOK<512
THEN ALIGNSTATE:=ALIGNSTATE-1;GOTO 40;END ELSE GOTO 22;END;
{369}IF S<>R THEN IF S=0 THEN{370}BEGIN PRINTNL(462);
SPRINTCS(WARNINGINDEX);PRINT(463);BEGIN HELPPTR:=4;HELPLINE[3]:=464;
HELPLINE[2]:=465;HELPLINE[1]:=466;HELPLINE[0]:=467;END;ERROR;GOTO 10;
END ELSE BEGIN T:=S;REPEAT BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=MEM[T].HH.LH;P:=Q;END;M:=M+1;U:=MEM[T].HH.RH;V:=S;
WHILE TRUE DO BEGIN IF U=R THEN IF CURTOK<>MEM[V].HH.LH THEN GOTO 30
ELSE BEGIN R:=MEM[V].HH.RH;GOTO 22;END;
IF MEM[U].HH.LH<>MEM[V].HH.LH THEN GOTO 30;U:=MEM[U].HH.RH;
V:=MEM[V].HH.RH;END;30:T:=MEM[T].HH.RH;UNTIL T=R;R:=S;END;
IF(CURTOK=PARTOKEN)AND(LONGSTATE<>101)THEN{368}BEGIN IF LONGSTATE=100
THEN BEGIN RUNAWAY;PRINTNL(457);SPRINTCS(WARNINGINDEX);PRINT(458);
BEGIN HELPPTR:=3;HELPLINE[2]:=459;HELPLINE[1]:=460;HELPLINE[0]:=461;END;
BACKERROR;END;PSTACK[N]:=MEM[25003].HH.RH;
ALIGNSTATE:=ALIGNSTATE-UNBALANCE;FOR M:=0 TO N DO FLUSHLIST(PSTACK[M]);
GOTO 10;END;
IF CURTOK<768 THEN IF CURTOK<512 THEN{371}BEGIN UNBALANCE:=1;
WHILE TRUE DO BEGIN BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=CURTOK;P:=Q;END;GETTOKEN;
IF(CURTOK=PARTOKEN)AND(LONGSTATE<>101)THEN{368}BEGIN IF LONGSTATE=100
THEN BEGIN RUNAWAY;PRINTNL(457);SPRINTCS(WARNINGINDEX);PRINT(458);
BEGIN HELPPTR:=3;HELPLINE[2]:=459;HELPLINE[1]:=460;HELPLINE[0]:=461;END;
BACKERROR;END;PSTACK[N]:=MEM[25003].HH.RH;
ALIGNSTATE:=ALIGNSTATE-UNBALANCE;FOR M:=0 TO N DO FLUSHLIST(PSTACK[M]);
GOTO 10;END;
IF CURTOK<768 THEN IF CURTOK<512 THEN UNBALANCE:=UNBALANCE+1 ELSE BEGIN
UNBALANCE:=UNBALANCE-1;IF UNBALANCE=0 THEN GOTO 31;END;END;
31:RBRACEPTR:=P;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;
P:=Q;END;END ELSE{367}BEGIN BACKINPUT;PRINTNL(449);
SPRINTCS(WARNINGINDEX);PRINT(450);BEGIN HELPPTR:=6;HELPLINE[5]:=451;
HELPLINE[4]:=452;HELPLINE[3]:=453;HELPLINE[2]:=454;HELPLINE[1]:=455;
HELPLINE[0]:=456;END;ALIGNSTATE:=ALIGNSTATE+1;LONGSTATE:=100;
CURTOK:=PARTOKEN;INSERROR;END ELSE BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=CURTOK;P:=Q;END;M:=M+1;
IF(MEM[R].HH.LH<3328)OR(MEM[R].HH.LH>3584)THEN GOTO 22;
40:IF S<>0 THEN{372}BEGIN IF(M=1)AND(MEM[P].HH.LH<768)AND(P<>25003)THEN
BEGIN MEM[RBRACEPTR].HH.RH:=0;BEGIN MEM[P].HH.RH:=AVAIL;AVAIL:=P;
DYNUSED:=DYNUSED-1;END;P:=MEM[25003].HH.RH;PSTACK[N]:=MEM[P].HH.RH;
BEGIN MEM[P].HH.RH:=AVAIL;AVAIL:=P;DYNUSED:=DYNUSED-1;END;
END ELSE PSTACK[N]:=MEM[25003].HH.RH;N:=N+1;
IF EQTB[3878].INT<>0 THEN BEGIN BEGINDIAGNOS;PRINTNL(35);PRINTINT(N);
PRINT(468);SHOWTOKENLIS(PSTACK[N-1],0,1000);ENDDIAGNOSTI(FALSE);END;END;
UNTIL MEM[R].HH.LH=3584;END;
{363}WHILE(CURINPUT.STATEFIELD=0)AND(CURINPUT.LOCFIELD=0)DO ENDTOKENLIST
;BEGINTOKENLI(REFCOUNT,5);CURINPUT.NAMEFIELD:=WARNINGINDEX;
CURINPUT.LOCFIELD:=MEM[R].HH.RH;
IF N>0 THEN BEGIN IF PARAMPTR+N>MAXPARAMSTAC THEN BEGIN MAXPARAMSTAC:=
PARAMPTR+N;IF MAXPARAMSTAC>PARAMSIZE THEN OVERFLOW(448,PARAMSIZE);END;
FOR M:=0 TO N-1 DO PARAMSTACK[PARAMPTR+M]:=PSTACK[M];
PARAMPTR:=PARAMPTR+N;END;10:SCANNERSTATU:=SAVESCANNERS;
WARNINGINDEX:=SAVEWARNINGI;END;PROCEDURE PASSTEXT;FORWARD;
PROCEDURE CONDITIONAL;FORWARD;PROCEDURE GETXTOKEN;FORWARD;
PROCEDURE CONVTOKS;FORWARD;PROCEDURE EXPANDCALLS;VAR T:HALFWORD;
P,Q,R:HALFWORD;J:0..BUFSIZE;CVBACKUP:INTEGER;
CVLBACKUP,RADIXBACKUP:SMALLNUMBER;BACKUPBACKUP:HALFWORD;
BEGIN CVBACKUP:=CURVAL;CVLBACKUP:=CURVALLEVEL;RADIXBACKUP:=RADIX;
BACKUPBACKUP:=MEM[25013].HH.RH;CASE CURCMD OF 100,101,102,103:MACROCALL;
104:{352}BEGIN CURTOK:=6460;BACKINPUT;END;
99:{359}BEGIN IF CURMARK[CURCHR]<>0 THEN BEGINTOKENLI(CURMARK[CURCHR],10
);END;94:{346}BEGIN GETTOKEN;T:=CURTOK;GETTOKEN;
IF CURCMD>92 THEN EXPANDCALLS ELSE BACKINPUT;CURTOK:=T;BACKINPUT;END;
97:{349}BEGIN R:=GETAVAIL;P:=R;REPEAT GETXTOKEN;
IF CSPTR=0 THEN BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;
P:=Q;END;UNTIL CSPTR<>0;IF CURCMD<>68 THEN{350}BEGIN PRINTNL(440);
BEGIN HELPPTR:=2;HELPLINE[1]:=441;HELPLINE[0]:=442;END;BACKERROR;END;
{351}J:=FIRST;P:=MEM[R].HH.RH;
WHILE P<>0 DO BEGIN IF J>=MAXBUFSTACK THEN BEGIN MAXBUFSTACK:=J+1;
IF MAXBUFSTACK=BUFSIZE THEN OVERFLOW(128,BUFSIZE);END;
BUFFER[J]:=MEM[P].HH.LH MOD 256;J:=J+1;P:=MEM[P].HH.RH;END;
IF J>FIRST+1 THEN BEGIN NONEWCONTROL:=FALSE;
CSPTR:=IDLOOKUP(FIRST,J-FIRST);NONEWCONTROL:=TRUE;
END ELSE IF J=FIRST THEN CSPTR:=257 ELSE CSPTR:=1+BUFFER[FIRST];
FLUSHLIST(R);IF EQTB[CSPTR].HH.B0=93 THEN EQTB[CSPTR].HH.B0:=0;
CURTOK:=CSPTR+4096;BACKINPUT;END;98:CONVTOKS;95:CONDITIONAL;
96:{469}IF CURCHR>IFLIMIT THEN BEGIN PRINTNL(592);
PRINTCMDCHR(96,CURCHR);BEGIN HELPPTR:=1;HELPLINE[0]:=584;END;ERROR;
END ELSE BEGIN WHILE CURCHR<>1 DO PASSTEXT;{460}BEGIN P:=CONDPTR;
CURIF:=MEM[P].HH.B1;IFLIMIT:=MEM[P].HH.B0;CONDPTR:=MEM[P].HH.RH;
BEGIN MEM[P].HH.RH:=AVAIL;AVAIL:=P;DYNUSED:=DYNUSED-1;END;
IF EQTB[3882].INT>1 THEN SHOWCURCMDCH;END;END;
OTHERS:{347}BEGIN PRINTNL(434);BEGIN HELPPTR:=5;HELPLINE[4]:=435;
HELPLINE[3]:=436;HELPLINE[2]:=437;HELPLINE[1]:=438;HELPLINE[0]:=439;END;
ERROR;END END;CURVAL:=CVBACKUP;CURVALLEVEL:=CVLBACKUP;
RADIX:=RADIXBACKUP;MEM[25013].HH.RH:=BACKUPBACKUP;END;
{353}PROCEDURE GETXTOKEN;LABEL 30;BEGIN WHILE TRUE DO BEGIN GETNEXT;
IF CURCMD<=92 THEN GOTO 30;
IF CURCMD>=100 THEN IF CURCMD<104 THEN MACROCALL ELSE BEGIN CSPTR:=2364;
CURCMD:=9;GOTO 30;END ELSE EXPANDCALLS;END;
30:IF CSPTR=0 THEN CURTOK:=(CURCMD*256)+CURCHR ELSE CURTOK:=4096+CSPTR;
END;{354}PROCEDURE XTOKEN;BEGIN WHILE CURCMD>92 DO BEGIN EXPANDCALLS;
GETNEXT;END;
IF CSPTR=0 THEN CURTOK:=(CURCMD*256)+CURCHR ELSE CURTOK:=4096+CSPTR;END;
{375}PROCEDURE SCANLEFTBRAC;BEGIN{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
IF CURCMD<>1 THEN BEGIN PRINTNL(469);BEGIN HELPPTR:=4;HELPLINE[3]:=470;
HELPLINE[2]:=471;HELPLINE[1]:=472;HELPLINE[0]:=473;END;BACKERROR;
CURTOK:=379;CURCMD:=1;CURCHR:=123;ALIGNSTATE:=ALIGNSTATE+1;END;END;
{377}PROCEDURE SCANOPTIONAL;BEGIN{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
IF CURTOK<>3133 THEN BACKINPUT;END;
{378}FUNCTION SCANKEYWORD(S:STRNUMBER):BOOLEAN;LABEL 10;VAR P:HALFWORD;
Q:HALFWORD;K:POOLPOINTER;BEGIN P:=25013;MEM[P].HH.RH:=0;K:=STRSTART[S];
WHILE K<STRSTART[S+1]DO BEGIN GETXTOKEN;
IF(CSPTR=0)AND((CURCHR=STRPOOL[K])OR(CURCHR=STRPOOL[K]-32))THEN BEGIN
BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;P:=Q;END;
K:=K+1 END ELSE BEGIN BACKINPUT;
IF P<>25013 THEN BEGINTOKENLI(MEM[25013].HH.RH,3);SCANKEYWORD:=FALSE;
GOTO 10;END;END;FLUSHLIST(MEM[25013].HH.RH);SCANKEYWORD:=TRUE;10:END;
{379}PROCEDURE SCANINT;FORWARD;{397}PROCEDURE SCANSEVENBIT;
BEGIN SCANINT;IF(CURVAL<0)OR(CURVAL>127)THEN BEGIN PRINTNL(492);
BEGIN HELPPTR:=2;HELPLINE[1]:=493;HELPLINE[0]:=494;END;INTERROR(CURVAL);
CURVAL:=0;END;END;{398}PROCEDURE SCANEIGHTBIT;BEGIN SCANINT;
IF(CURVAL<0)OR(CURVAL>255)THEN BEGIN PRINTNL(495);BEGIN HELPPTR:=2;
HELPLINE[1]:=496;HELPLINE[0]:=494;END;INTERROR(CURVAL);CURVAL:=0;END;
END;{399}PROCEDURE SCANFOURBITI;BEGIN SCANINT;
IF(CURVAL<0)OR(CURVAL>15)THEN BEGIN PRINTNL(497);BEGIN HELPPTR:=2;
HELPLINE[1]:=498;HELPLINE[0]:=494;END;INTERROR(CURVAL);CURVAL:=0;END;
END;{400}PROCEDURE SCANCHARNUM;BEGIN SCANINT;
IF(CURVAL<0)OR(CURVAL>255)THEN BEGIN PRINTNL(499);BEGIN HELPPTR:=2;
HELPLINE[1]:=500;HELPLINE[0]:=494;END;INTERROR(CURVAL);CURVAL:=0;END;
END;{401}PROCEDURE SCANFIFTEENB;BEGIN SCANINT;
IF(CURVAL<0)OR(CURVAL>32767)THEN BEGIN PRINTNL(501);BEGIN HELPPTR:=2;
HELPLINE[1]:=502;HELPLINE[0]:=494;END;INTERROR(CURVAL);CURVAL:=0;END;
END;{402}PROCEDURE SCANTWENTYSE;BEGIN SCANINT;
IF(CURVAL<0)OR(CURVAL>134217727)THEN BEGIN PRINTNL(503);
BEGIN HELPPTR:=2;HELPLINE[1]:=504;HELPLINE[0]:=494;END;INTERROR(CURVAL);
CURVAL:=0;END;END;{533}PROCEDURE SCANFONTIDEN;VAR F:INTERNALFONT;
BEGIN{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
IF CURCMD=77 THEN F:=CURCHR ELSE BEGIN PRINTNL(623);BEGIN HELPPTR:=2;
HELPLINE[1]:=624;HELPLINE[0]:=625;END;BACKERROR;F:=0;END;CURVAL:=F;END;
{534}PROCEDURE SCANTEXINFO(WRITING:BOOLEAN);VAR F:INTERNALFONT;
BEGIN SCANFONTIDEN;F:=CURVAL;SCANINT;
IF F=0 THEN CURVAL:=FMEMPTR ELSE BEGIN IF CURVAL<=0 THEN CURVAL:=FMEMPTR
ELSE BEGIN IF WRITING AND(CURVAL<=4)AND(CURVAL>=2)AND(FONTGLUE[F]<>0)
THEN BEGIN DELETEGLUERE(FONTGLUE[F]);FONTGLUE[F]:=0;END;
IF CURVAL>FONTPARAMS[F]THEN IF F<FONTPTR THEN CURVAL:=FMEMPTR ELSE{536}
BEGIN REPEAT IF FMEMPTR=FONTMEMSIZE THEN OVERFLOW(630,FONTMEMSIZE);
FONTINFO[FMEMPTR].INT:=0;FMEMPTR:=FMEMPTR+1;
FONTPARAMS[F]:=FONTPARAMS[F]+1;UNTIL CURVAL=FONTPARAMS[F];
CURVAL:=FMEMPTR-1;END ELSE CURVAL:=CURVAL+PARAMBASE[F];END;
{535}IF CURVAL=FMEMPTR THEN BEGIN PRINTNL(610);SPRINTCS(FONTIDENT[F]);
PRINT(626);PRINTINT(FONTPARAMS[F]);PRINT(627);BEGIN HELPPTR:=2;
HELPLINE[1]:=628;HELPLINE[0]:=629;END;ERROR;END;END;END;
{383}PROCEDURE SCANTHE(LEVEL:SMALLNUMBER;NEGATIVE:BOOLEAN);LABEL 20;
VAR M:HALFWORD;BEGIN 20:GETXTOKEN;M:=CURCHR;
CASE CURCMD OF 75:{384}BEGIN SCANSEVENBIT;
IF M<4143 THEN BEGIN CURVAL:=EQTB[M+CURVAL].HH.RH;CURVALLEVEL:=0;
END ELSE BEGIN CURVAL:=EQTB[M+CURVAL].INT;CURVALLEVEL:=0;END;END;
69,76,77,84:{385}IF(LEVEL<>6)OR NEGATIVE THEN BEGIN PRINTNL(481);
BEGIN HELPPTR:=1;HELPLINE[0]:=482;END;ERROR;
IF LEVEL<>6 THEN BEGIN CURVAL:=0;CURVALLEVEL:=1;
END ELSE BEGIN CURVAL:=0;CURVALLEVEL:=0;END;
END ELSE IF CURCMD=69 THEN BEGIN CURVAL:=EQTB[M].HH.RH;CURVALLEVEL:=6;
END ELSE{392}IF CURCMD=77 THEN BEGIN CURVAL:=CURCHR;CURVALLEVEL:=4;
END ELSE IF CURCMD=84 THEN BEGIN CURVAL:=FONTIDENT[EQTB[3159].HH.RH];
CURVALLEVEL:=5;END ELSE BEGIN SCANFOURBITI;
BEGIN CURVAL:=FONTIDENT[EQTB[M+CURVAL].HH.RH];CURVALLEVEL:=5;END;END;
70:BEGIN CURVAL:=EQTB[3849+M].INT;CURVALLEVEL:=0;END;
71,74:BEGIN CURVAL:=EQTB[4271+M].INT;CURVALLEVEL:=1;END;
72:IF M>=14 THEN BEGIN CURVAL:=EQTB[2368+M].HH.RH;CURVALLEVEL:=3;
END ELSE BEGIN CURVAL:=EQTB[2368+M].HH.RH;CURVALLEVEL:=2;END;
67:{388}IF ABS(CURLIST.MODEFIELD)<>M THEN BEGIN PRINTNL(481);
BEGIN HELPPTR:=4;HELPLINE[3]:=485;HELPLINE[2]:=486;HELPLINE[1]:=487;
HELPLINE[0]:=482;END;ERROR;IF LEVEL<>6 THEN BEGIN CURVAL:=0;
CURVALLEVEL:=1;END ELSE BEGIN CURVAL:=0;CURVALLEVEL:=0;END;
END ELSE BEGIN CURVAL:=CURLIST.AUXFIELD;
IF M=1 THEN CURVALLEVEL:=1 ELSE CURVALLEVEL:=0;END;
78:BEGIN CURVAL:=EQTB[3208].HH.RH;CURVALLEVEL:=0;END;
73:{390}BEGIN SCANTEXINFO(FALSE);FONTINFO[FMEMPTR].INT:=0;
BEGIN CURVAL:=FONTINFO[CURVAL].INT;CURVALLEVEL:=1;END;END;
65:{391}BEGIN SCANEIGHTBIT;CASE M OF 0:CURVAL:=EQTB[3887+CURVAL].INT;
1:CURVAL:=EQTB[4290+CURVAL].INT;2:CURVAL:=EQTB[2385+CURVAL].HH.RH;
3:CURVAL:=EQTB[2641+CURVAL].HH.RH;END;CURVALLEVEL:=M;END;
66:{389}BEGIN CURVAL:=0;
IF NOT(CURLIST.TAILFIELD>25000)AND(CURLIST.MODEFIELD<>0)THEN BEGIN IF
MEM[CURLIST.TAILFIELD].HH.B0=10 THEN CURVAL:=MEM[CURLIST.TAILFIELD+1].HH
.LH;
END ELSE IF(CURLIST.MODEFIELD=1)AND(CURLIST.TAILFIELD=CURLIST.HEADFIELD)
AND(LASTPAGEGLUE<>262143)THEN CURVAL:=LASTPAGEGLUE;CURVALLEVEL:=2;END;
64:BEGIN IF M>0 THEN NEGATIVE:=NOT NEGATIVE;GOTO 20;END;
OTHERS:{393}BEGIN PRINTNL(488);PRINTCMDCHR(CURCMD,CURCHR);PRINT(489);
BEGIN HELPPTR:=1;HELPLINE[0]:=482;END;ERROR;
IF LEVEL<>6 THEN BEGIN CURVAL:=0;CURVALLEVEL:=1;
END ELSE BEGIN CURVAL:=0;CURVALLEVEL:=0;END;END END;
WHILE CURVALLEVEL>LEVEL DO{394}BEGIN IF CURVALLEVEL=2 THEN CURVAL:=MEM[
CURVAL+1].INT ELSE IF CURVALLEVEL=3 THEN{395}BEGIN PRINTNL(490);
BEGIN HELPPTR:=1;HELPLINE[0]:=491;END;ERROR;END;
CURVALLEVEL:=CURVALLEVEL-1;END;
{396}IF NEGATIVE THEN IF CURVALLEVEL>=2 THEN BEGIN CURVAL:=NEWSPEC(
CURVAL);{428}BEGIN MEM[CURVAL+1].INT:=-MEM[CURVAL+1].INT;
MEM[CURVAL+2].INT:=-MEM[CURVAL+2].INT;
MEM[CURVAL+3].INT:=-MEM[CURVAL+3].INT;END;
END ELSE CURVAL:=-CURVAL ELSE IF(CURVALLEVEL>=2)AND(CURVALLEVEL<=3)THEN
MEM[CURVAL].HH.RH:=MEM[CURVAL].HH.RH+1;END;{405}PROCEDURE SCANINT;
LABEL 30;VAR NEGATIVE:BOOLEAN;M:INTEGER;D:SMALLNUMBER;VACUOUS:BOOLEAN;
OKSOFAR:BOOLEAN;BEGIN RADIX:=0;OKSOFAR:=TRUE;{406}NEGATIVE:=FALSE;
REPEAT{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
IF CURTOK=3117 THEN BEGIN NEGATIVE:=NOT NEGATIVE;CURTOK:=3115;END;
UNTIL CURTOK<>3115;IF CURTOK=3168 THEN{407}BEGIN GETTOKEN;
IF CURTOK<4096 THEN BEGIN CURVAL:=CURCHR;
IF CURCMD<=2 THEN IF CURCMD=2 THEN ALIGNSTATE:=ALIGNSTATE+1 ELSE
ALIGNSTATE:=ALIGNSTATE-1;
END ELSE IF CURTOK<4225 THEN CURVAL:=CURTOK-4097 ELSE CURVAL:=CURTOK
-4225;IF CURVAL>127 THEN BEGIN PRINTNL(505);BEGIN HELPPTR:=2;
HELPLINE[1]:=506;HELPLINE[0]:=507;END;CURVAL:=48;BACKERROR;
END ELSE{408}BEGIN GETTOKEN;IF CURCMD<>10 THEN BACKINPUT;END;
END ELSE IF(CURCMD=64)OR(CURCMD=65)THEN{409}BEGIN IF CURCMD=65 THEN
BACKINPUT ELSE IF CURCHR<>0 THEN NEGATIVE:=NOT NEGATIVE;
SCANTHE(0,FALSE);END ELSE{410}BEGIN RADIX:=10;M:=214748364;
IF CURTOK=3111 THEN BEGIN RADIX:=8;M:=268435456;GETXTOKEN;
END ELSE IF CURTOK=3106 THEN BEGIN RADIX:=16;M:=134217728;GETXTOKEN;END;
VACUOUS:=TRUE;CURVAL:=0;
{411}WHILE TRUE DO BEGIN IF(CURTOK<3120+RADIX)AND(CURTOK>=3120)AND(
CURTOK<=3129)THEN D:=CURTOK-3120 ELSE IF(RADIX=16)AND(CURTOK<=2886)AND(
CURTOK>=2881)THEN D:=CURTOK-2871 ELSE GOTO 30;VACUOUS:=FALSE;
IF(CURVAL>=M)AND((CURVAL>M)OR(D>7)OR(RADIX<>10))THEN BEGIN IF OKSOFAR
THEN BEGIN PRINTNL(508);BEGIN HELPPTR:=2;HELPLINE[1]:=509;
HELPLINE[0]:=510;END;ERROR;CURVAL:=2147483647;OKSOFAR:=FALSE;END;
END ELSE CURVAL:=CURVAL*RADIX+D;GETXTOKEN;END;30:;
IF VACUOUS THEN{412}BEGIN PRINTNL(511);BEGIN HELPPTR:=3;
HELPLINE[2]:=512;HELPLINE[1]:=513;HELPLINE[0]:=514;END;BACKERROR;
END ELSE IF CURCMD<>10 THEN BACKINPUT;END;
IF NEGATIVE THEN CURVAL:=-CURVAL;END;
{414}PROCEDURE SCANDIMEN(MU,INF,SHORTCUT:BOOLEAN);LABEL 30,40,45,88,89;
VAR NEGATIVE:BOOLEAN;F:INTEGER;{416}NUM,DENOM:1..65536;K:SMALLNUMBER;
J:SMALLNUMBER;V:SCALED;SAVECURVAL:INTEGER;BEGIN F:=0;ARITHERROR:=FALSE;
CURORDER:=0;NEGATIVE:=FALSE;
IF NOT SHORTCUT THEN BEGIN{406}NEGATIVE:=FALSE;
REPEAT{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
IF CURTOK=3117 THEN BEGIN NEGATIVE:=NOT NEGATIVE;CURTOK:=3115;END;
UNTIL CURTOK<>3115;
IF(CURCMD=64)OR(CURCMD=65)THEN{415}BEGIN IF CURCMD=65 THEN BACKINPUT
ELSE IF CURCHR<>0 THEN NEGATIVE:=NOT NEGATIVE;SCANTHE(1,FALSE);
IF CURVALLEVEL=1 THEN BEGIN IF MU THEN{395}BEGIN PRINTNL(490);
BEGIN HELPPTR:=1;HELPLINE[0]:=491;END;ERROR;END;GOTO 89;END;
END ELSE BEGIN BACKINPUT;
IF CURTOK<>3118 THEN SCANINT ELSE BEGIN RADIX:=10;CURVAL:=0;END;
IF(RADIX=10)AND(CURTOK=3118)THEN{417}BEGIN K:=0;GETTOKEN;
WHILE TRUE DO BEGIN GETXTOKEN;
IF(CURTOK>3129)OR(CURTOK<3120)THEN GOTO 30;
IF K<16 THEN BEGIN DIG[K]:=CURTOK-3120;K:=K+1;END;END;
30:F:=ROUNDDECIMAL(K);IF CURCMD<>10 THEN BACKINPUT;END;END;END;
IF CURVAL<0 THEN BEGIN NEGATIVE:=NOT NEGATIVE;CURVAL:=-CURVAL;END;
{418}IF INF THEN{419}IF SCANKEYWORD(179)THEN BEGIN CURORDER:=1;
WHILE SCANKEYWORD(108)DO BEGIN IF CURORDER=3 THEN BEGIN PRINTNL(517);
PRINT(518);BEGIN HELPPTR:=1;HELPLINE[0]:=519;END;ERROR;
END ELSE CURORDER:=CURORDER+1;END;GOTO 88;END;
IF MU THEN{420}IF SCANKEYWORD(203)THEN GOTO 88 ELSE BEGIN PRINTNL(517);
PRINT(520);BEGIN HELPPTR:=4;HELPLINE[3]:=521;HELPLINE[2]:=522;
HELPLINE[1]:=523;HELPLINE[0]:=524;END;ERROR;GOTO 88;END;
{421}IF SCANKEYWORD(525)THEN BEGIN V:={514}FONTINFO[6+PARAMBASE[EQTB[
3159].HH.RH]].INT;GOTO 40;END;
IF SCANKEYWORD(526)THEN BEGIN V:={515}FONTINFO[5+PARAMBASE[EQTB[3159].HH
.RH]].INT;GOTO 40;END;IF SCANKEYWORD(527)THEN BEGIN SAVECURVAL:=CURVAL;
SCANEIGHTBIT;V:=EQTB[4290+CURVAL].INT;CURVAL:=SAVECURVAL;GOTO 40;END;
IF SCANKEYWORD(528)THEN BEGIN V:=EQTB[4273].INT;GOTO 40;END;
IF SCANKEYWORD(529)THEN J:=1 ELSE IF SCANKEYWORD(530)THEN J:=2 ELSE IF
SCANKEYWORD(531)THEN J:=3 ELSE GOTO 45;SAVECURVAL:=CURVAL;SCANEIGHTBIT;
IF EQTB[2903+CURVAL].HH.RH=0 THEN V:=0 ELSE V:=MEM[EQTB[2903+CURVAL].HH.
RH+J].INT;CURVAL:=SAVECURVAL;
40:CURVAL:=NXPLUSY(CURVAL,V,XNOVERD(V,F,65536));GOTO 89;45:;
IF SCANKEYWORD(515)THEN{422}BEGIN{408}BEGIN GETTOKEN;
IF CURCMD<>10 THEN BACKINPUT;END;PREPAREMAG;
IF EQTB[3865].INT<>1000 THEN BEGIN CURVAL:=XNOVERD(CURVAL,1000,EQTB[3865
].INT);F:=(1000*F+65536*REMAINDER)DIV EQTB[3865].INT;
CURVAL:=CURVAL+(F DIV 65536);F:=F MOD 65536;END;END;
IF SCANKEYWORD(516)THEN GOTO 88;
{423}IF SCANKEYWORD(532)THEN BEGIN NUM:=7227;DENOM:=100;
END ELSE IF SCANKEYWORD(533)THEN BEGIN NUM:=12;DENOM:=1;
END ELSE IF SCANKEYWORD(534)THEN BEGIN NUM:=7227;DENOM:=254;
END ELSE IF SCANKEYWORD(535)THEN BEGIN NUM:=7227;DENOM:=2540;
END ELSE IF SCANKEYWORD(536)THEN BEGIN NUM:=7227;DENOM:=7200;
END ELSE IF SCANKEYWORD(537)THEN BEGIN NUM:=1238;DENOM:=1157;
END ELSE IF SCANKEYWORD(538)THEN BEGIN NUM:=14856;DENOM:=1157;
END ELSE IF SCANKEYWORD(539)THEN GOTO 89 ELSE{424}BEGIN PRINTNL(517);
PRINT(540);BEGIN HELPPTR:=6;HELPLINE[5]:=541;HELPLINE[4]:=542;
HELPLINE[3]:=543;HELPLINE[2]:=522;HELPLINE[1]:=523;HELPLINE[0]:=524;END;
ERROR;GOTO 88;END;CURVAL:=XNOVERD(CURVAL,NUM,DENOM);
F:=(NUM*F+65536*REMAINDER)DIV DENOM;CURVAL:=CURVAL+(F DIV 65536);
F:=F MOD 65536;
88:IF CURVAL>=16384 THEN ARITHERROR:=TRUE ELSE CURVAL:=CURVAL*65536+F;
89:IF ARITHERROR OR(ABS(CURVAL)>=1073741824)THEN{425}BEGIN PRINTNL(544);
BEGIN HELPPTR:=2;HELPLINE[1]:=545;HELPLINE[0]:=546;END;ERROR;
CURVAL:=1073741823;ARITHERROR:=FALSE;END;
IF NEGATIVE THEN CURVAL:=-CURVAL;{408}BEGIN GETTOKEN;
IF CURCMD<>10 THEN BACKINPUT;END;END;
{426}PROCEDURE SCANGLUE(LEVEL:SMALLNUMBER);LABEL 10;
VAR NEGATIVE:BOOLEAN;Q:HALFWORD;MU:BOOLEAN;BEGIN MU:=(LEVEL=3);
{406}NEGATIVE:=FALSE;REPEAT{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
IF CURTOK=3117 THEN BEGIN NEGATIVE:=NOT NEGATIVE;CURTOK:=3115;END;
UNTIL CURTOK<>3115;
IF(CURCMD=64)OR(CURCMD=65)THEN BEGIN IF CURCMD=65 THEN BACKINPUT ELSE IF
CURCHR<>0 THEN NEGATIVE:=NOT NEGATIVE;SCANTHE(LEVEL,NEGATIVE);
NEGATIVE:=FALSE;
IF CURVALLEVEL>=2 THEN BEGIN IF CURVALLEVEL<>LEVEL THEN{395}BEGIN
PRINTNL(490);BEGIN HELPPTR:=1;HELPLINE[0]:=491;END;ERROR;END;GOTO 10;
END;
IF CURVALLEVEL=0 THEN SCANDIMEN(MU,FALSE,TRUE)ELSE IF LEVEL=3 THEN{395}
BEGIN PRINTNL(490);BEGIN HELPPTR:=1;HELPLINE[0]:=491;END;ERROR;END;
END ELSE BEGIN BACKINPUT;SCANDIMEN(MU,FALSE,FALSE);END;
{427}Q:=NEWSPEC(0);MEM[Q+1].INT:=CURVAL;
IF SCANKEYWORD(547)THEN BEGIN SCANDIMEN(MU,TRUE,FALSE);
MEM[Q+2].INT:=CURVAL;MEM[Q].HH.B0:=CURORDER;END;
IF SCANKEYWORD(548)THEN BEGIN SCANDIMEN(MU,TRUE,FALSE);
MEM[Q+3].INT:=CURVAL;MEM[Q].HH.B1:=CURORDER;END;CURVAL:=Q;
IF NEGATIVE THEN{428}BEGIN MEM[CURVAL+1].INT:=-MEM[CURVAL+1].INT;
MEM[CURVAL+2].INT:=-MEM[CURVAL+2].INT;
MEM[CURVAL+3].INT:=-MEM[CURVAL+3].INT;END;10:END;
{429}FUNCTION SCANRULESPEC:HALFWORD;LABEL 21;VAR Q:HALFWORD;
BEGIN Q:=NEWRULE;
IF CURCMD=36 THEN MEM[Q+1].INT:=26215 ELSE BEGIN MEM[Q+3].INT:=26215;
MEM[Q+2].INT:=0;END;
21:IF SCANKEYWORD(549)THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
MEM[Q+1].INT:=CURVAL;GOTO 21;END;
IF SCANKEYWORD(550)THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
MEM[Q+3].INT:=CURVAL;GOTO 21;END;
IF SCANKEYWORD(551)THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
MEM[Q+2].INT:=CURVAL;GOTO 21;END;SCANRULESPEC:=Q;END;
{430}FUNCTION STRTOKS:HALFWORD;VAR P:HALFWORD;Q:HALFWORD;T:HALFWORD;
K:POOLPOINTER;
BEGIN BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE);END;
P:=25003;MEM[P].HH.RH:=0;K:=STRSTART[STRPTR];
WHILE K<POOLPTR DO BEGIN T:=STRPOOL[K];
IF T=32 THEN T:=2592 ELSE T:=3072+T;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=T;P:=Q;END;K:=K+1;END;POOLPTR:=STRSTART[STRPTR];
STRTOKS:=P;END;{431}FUNCTION THETOKS(NEGATIVE:BOOLEAN):HALFWORD;
VAR OLDSETTING:0..21;P,Q,R:HALFWORD;BEGIN SCANTHE(6,NEGATIVE);
IF CURVALLEVEL>=5 THEN{432}BEGIN P:=25003;MEM[P].HH.RH:=0;
IF CURVALLEVEL=5 THEN BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=4096+CURVAL;P:=Q;
END ELSE IF CURVAL<>0 THEN BEGIN R:=MEM[CURVAL].HH.RH;
WHILE R<>0 DO BEGIN BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=MEM[R].HH.LH;P:=Q;END;R:=MEM[R].HH.RH;END;END;THETOKS:=P;
END ELSE BEGIN OLDSETTING:=SELECTOR;SELECTOR:=21;
CASE CURVALLEVEL OF 0:PRINTINT(CURVAL);1:BEGIN PRINTSCALED(CURVAL);
PRINT(516);END;2:BEGIN PRINTSPEC(CURVAL,516);DELETEGLUERE(CURVAL);END;
3:BEGIN PRINTSPEC(CURVAL,203);DELETEGLUERE(CURVAL);END;
4:BEGIN PRINT(FONTNAME[CURVAL]);
IF FONTSIZE[CURVAL]<>FONTDSIZE[CURVAL]THEN BEGIN PRINT(552);
PRINTSCALED(FONTSIZE[CURVAL]);PRINT(516);END;END;END;
SELECTOR:=OLDSETTING;THETOKS:=STRTOKS;END;END;{433}PROCEDURE CONVTOKS;
VAR OLDSETTING:0..21;C:0..1;BEGIN C:=CURCHR;
IF C=0 THEN SCANINT ELSE GETTOKEN;OLDSETTING:=SELECTOR;SELECTOR:=21;
IF C=0 THEN IF CURVAL>=0 THEN PRINTINT(CURVAL)ELSE PRINTROMANIN(-CURVAL)
ELSE IF CSPTR<>0 THEN SPRINTCS(CSPTR)ELSE PRINTCHAR(CURCHR);
SELECTOR:=OLDSETTING;MEM[25012].HH.RH:=STRTOKS;
BEGINTOKENLI(MEM[25003].HH.RH,4);END;
{436}FUNCTION SCANTOKS(MACRODEF,XPAND:BOOLEAN):HALFWORD;
LABEL 40,30,31,32;VAR T:HALFWORD;S:HALFWORD;P:HALFWORD;Q:HALFWORD;
UNBALANCE:HALFWORD;HASHBRACE:HALFWORD;BEGIN SCANNERSTATU:=2;
WARNINGINDEX:=CSPTR;DEFREF:=GETAVAIL;MEM[DEFREF].HH.LH:=0;P:=DEFREF;
HASHBRACE:=0;T:=3120;
IF MACRODEF THEN{437}BEGIN WHILE TRUE DO BEGIN GETTOKEN;
IF CURTOK<768 THEN GOTO 31;IF CURCMD=6 THEN{439}BEGIN S:=3328+CURCHR;
GETTOKEN;IF CURCMD=1 THEN BEGIN HASHBRACE:=CURTOK;BEGIN Q:=GETAVAIL;
MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;P:=Q;END;BEGIN Q:=GETAVAIL;
MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=3584;P:=Q;END;GOTO 30;END;
IF T=3129 THEN BEGIN PRINTNL(557);BEGIN HELPPTR:=1;HELPLINE[0]:=558;END;
ERROR;END ELSE BEGIN T:=T+1;IF CURTOK<>T THEN BEGIN PRINTNL(559);
BEGIN HELPPTR:=2;HELPLINE[1]:=560;HELPLINE[0]:=561;END;BACKERROR;END;
CURTOK:=S;END;END;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=CURTOK;P:=Q;END;END;31:BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=3584;P:=Q;END;IF CURCMD=2 THEN{438}BEGIN PRINTNL(469);
ALIGNSTATE:=ALIGNSTATE+1;BEGIN HELPPTR:=2;HELPLINE[1]:=555;
HELPLINE[0]:=556;END;ERROR;GOTO 40;END;30:END ELSE SCANLEFTBRAC;
{440}UNBALANCE:=1;
WHILE TRUE DO BEGIN IF XPAND AND(CURCMD<>83)THEN{441}BEGIN WHILE TRUE DO
BEGIN GETXTOKEN;IF CURCMD=64 THEN Q:=THETOKS(CURCHR>0)ELSE GOTO 32;
MEM[P].HH.RH:=MEM[25003].HH.RH;P:=Q;END;32:END ELSE GETTOKEN;
IF CURTOK<768 THEN IF CURCMD<2 THEN UNBALANCE:=UNBALANCE+1 ELSE BEGIN
UNBALANCE:=UNBALANCE-1;IF UNBALANCE=0 THEN GOTO 40;
END ELSE IF CURCMD=6 THEN{442}BEGIN S:=CURTOK;GETTOKEN;
IF CURCMD<>6 THEN IF(CURCHR<49)OR(CURCHR>T-3072)OR(CURCMD<>12)THEN BEGIN
PRINTNL(562);SPRINTCS(WARNINGINDEX);BEGIN HELPPTR:=3;HELPLINE[2]:=563;
HELPLINE[1]:=564;HELPLINE[0]:=565;END;BACKERROR;CURTOK:=S;
END ELSE CURTOK:=1232+CURCHR;END;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=CURTOK;P:=Q;END;END;40:SCANNERSTATU:=0;
{408}BEGIN GETTOKEN;IF CURCMD<>10 THEN BACKINPUT;END;
IF HASHBRACE<>0 THEN BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=HASHBRACE;P:=Q;END;SCANTOKS:=P;END;
{445}PROCEDURE READTOKS(N:SMALLNUMBER;R:HALFWORD);VAR P:HALFWORD;
Q:HALFWORD;S:INTEGER;BEGIN BEGINFILEREA;CURINPUT.NAMEFIELD:=N+1;
IF READOPEN[N]=2 THEN{446}IF INTERACTION>1 THEN BEGIN PRINTLN;
SPRINTCS(R);BEGIN PRINT(61);TERMINPUT;END;
END ELSE FATALERROR(566)ELSE IF READOPEN[N]=1 THEN{447}BEGIN IF EOLN(
READFILE[N])THEN LAST:=CURINPUT.STARTFIELD ELSE BEGIN BUFFER[CURINPUT.
STARTFIELD]:=XORD[READFILE[N]↑];FIRST:=CURINPUT.STARTFIELD+1;
IF NOT INPUTLN(READFILE[N])THEN CONFUSION(347);
IF(LAST-CURINPUT.STARTFIELD=29)AND(BUFFER[CURINPUT.STARTFIELD]=67)AND(
BUFFER[CURINPUT.STARTFIELD+8]=22)THEN BEGIN WHILE(READFILE[N]↑<>CHR(12))
AND(NOT EOF(READFILE[N]))DO BEGIN READLN(READFILE[N]);
READ(READFILE[N],AUXBUF:TEMPPTR);END;BUFFER[CURINPUT.STARTFIELD]:=12;
LAST:=CURINPUT.STARTFIELD+1;END;END;READOPEN[N]:=0;
END ELSE{448}BEGIN IF NOT INPUTLN(READFILE[N])THEN BEGIN ACLOSE(READFILE
[N]);READOPEN[N]:=2;LAST:=CURINPUT.STARTFIELD;END;END;
CURINPUT.LIMITFIELD:=LAST;BUFFER[CURINPUT.LIMITFIELD]:=13;
FIRST:=CURINPUT.LIMITFIELD+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
CURINPUT.STATEFIELD:=33;S:=ALIGNSTATE;ALIGNSTATE:=1000000;P:=25004;
MEM[P].HH.RH:=0;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=0;P:=Q;
END;CURTOK:=3584;REPEAT BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=CURTOK;P:=Q;END;GETTOKEN;UNTIL CURTOK=0;ENDFILEREADI;
CURVAL:=MEM[25004].HH.RH;ALIGNSTATE:=S;END;{456}PROCEDURE PASSTEXT;
LABEL 30;VAR L:INTEGER;SAVESCANNERS:SMALLNUMBER;
BEGIN SAVESCANNERS:=SCANNERSTATU;SCANNERSTATU:=1;L:=0;SKIPLINE:=LINE;
SKIPPAGE:=PAGE;WHILE TRUE DO BEGIN GETTOKEN;
IF CURCMD=96 THEN BEGIN IF L=0 THEN GOTO 30;IF CURCHR=1 THEN L:=L-1;
END ELSE IF CURCMD=95 THEN L:=L+1;END;30:SCANNERSTATU:=SAVESCANNERS;END;
{457}PROCEDURE CONDITIONAL;LABEL 10,50;VAR B:BOOLEAN;R:60..62;
M,N:INTEGER;P,Q:HALFWORD;SAVESCANNERS:SMALLNUMBER;
BEGIN{459}BEGIN IF EQTB[3882].INT>1 THEN SHOWCURCMDCH;P:=GETAVAIL;
MEM[P].HH.RH:=CONDPTR;MEM[P].HH.B0:=IFLIMIT;MEM[P].HH.B1:=CURIF;
CONDPTR:=P;CURIF:=CURCHR;IFLIMIT:=0;END;
CASE CURIF OF 0,1:{465}BEGIN GETXTOKEN;
IF(CURCMD>12)OR(CURCHR>127)THEN N:=256 ELSE BEGIN N:=CURCHR;M:=CURCMD;
GETXTOKEN;IF(CURCMD>12)OR(CURCHR>127)THEN N:=256;END;
IF N<256 THEN IF CURIF=0 THEN B:=(N=CURCHR)ELSE B:=(M=CURCMD)ELSE BEGIN
PRINTNL(589);BEGIN HELPPTR:=2;HELPLINE[1]:=590;HELPLINE[0]:=591;END;
BACKERROR;B:=FALSE;END;END;
2,3:{462}BEGIN IF CURIF=2 THEN SCANINT ELSE SCANDIMEN(FALSE,FALSE,FALSE)
;N:=CURVAL;{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
IF(CURTOK>=3132)AND(CURTOK<=3134)THEN R:=CURTOK-3072 ELSE BEGIN PRINTNL(
587);PRINTCMDCHR(95,CURIF);BEGIN HELPPTR:=1;HELPLINE[0]:=588;END;
BACKERROR;R:=61;END;
IF CURIF=2 THEN SCANINT ELSE SCANDIMEN(FALSE,FALSE,FALSE);
CASE R OF 60:B:=(N<CURVAL);61:B:=(N=CURVAL);62:B:=(N>CURVAL);END;END;
4:{463}BEGIN SCANEIGHTBIT;B:=NOT ODD(EQTB[3887+CURVAL].INT);END;
5:B:=(ABS(CURLIST.MODEFIELD)=1);6:B:=(ABS(CURLIST.MODEFIELD)=94);
7:B:=(ABS(CURLIST.MODEFIELD)=187);8:B:=(CURLIST.MODEFIELD<0);
9:{464}BEGIN SCANEIGHTBIT;B:=(EQTB[2903+CURVAL].HH.RH=0);END;
10:{466}BEGIN SAVESCANNERS:=SCANNERSTATU;SCANNERSTATU:=0;GETTOKEN;
N:=CSPTR;P:=CURCMD;Q:=CURCHR;GETTOKEN;
IF CURCMD<>P THEN B:=FALSE ELSE IF CURCMD<100 THEN B:=(CURCHR=Q)ELSE{467
}BEGIN P:=MEM[CURCHR].HH.RH;Q:=MEM[EQTB[N].HH.RH].HH.RH;
WHILE(P<>0)AND(Q<>0)DO IF MEM[P].HH.LH<>MEM[Q].HH.LH THEN P:=0 ELSE
BEGIN P:=MEM[P].HH.RH;Q:=MEM[Q].HH.RH;END;B:=((P=0)AND(Q=0));END;
SCANNERSTATU:=SAVESCANNERS;END;11:BEGIN SCANFOURBITI;
B:=(READOPEN[CURVAL]=2);END;12:{468}BEGIN SCANINT;N:=CURVAL;
WHILE N<>0 DO BEGIN PASSTEXT;IF CURCHR<>3 THEN GOTO 50;N:=N-1;END;
IFLIMIT:=3;GOTO 10;END;END;
IF EQTB[3882].INT>1 THEN{461}BEGIN BEGINDIAGNOS;
IF B THEN PRINT(585)ELSE PRINT(586);ENDDIAGNOSTI(FALSE);END;
IF B THEN BEGIN IFLIMIT:=2;GOTO 10;END;
{458}WHILE TRUE DO BEGIN PASSTEXT;IF CURCHR<>3 THEN GOTO 50;
PRINTNL(583);BEGIN HELPPTR:=1;HELPLINE[0]:=584;END;END;
50:IF CURCHR=1 THEN{460}BEGIN P:=CONDPTR;CURIF:=MEM[P].HH.B1;
IFLIMIT:=MEM[P].HH.B0;CONDPTR:=MEM[P].HH.RH;BEGIN MEM[P].HH.RH:=AVAIL;
AVAIL:=P;DYNUSED:=DYNUSED-1;END;IF EQTB[3882].INT>1 THEN SHOWCURCMDCH;
END ELSE IFLIMIT:=1;10:END;{474}PROCEDURE BEGINNAME;
BEGIN AREADELIMITE:=0;EXTDELIMITER:=0;END;
{475}FUNCTION MORENAME(C:ASCIICODE):BOOLEAN;
BEGIN IF C=32 THEN MORENAME:=FALSE ELSE BEGIN IF C=91 THEN AREADELIMITE
:=POOLPTR ELSE IF C=46 THEN EXTDELIMITER:=POOLPTR;
BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE);END;
BEGIN STRPOOL[POOLPTR]:=C;POOLPTR:=POOLPTR+1;END;MORENAME:=TRUE;END;END;
{476}PROCEDURE ENDNAME;
BEGIN IF STRPTR+3>MAXSTRINGS THEN OVERFLOW(130,MAXSTRINGS);
CURNAME:=STRPTR;
IF EXTDELIMITER=0 THEN CUREXT:=226 ELSE BEGIN STRPTR:=STRPTR+1;
STRSTART[STRPTR]:=EXTDELIMITER;CUREXT:=STRPTR;END;
IF AREADELIMITE<=STRSTART[STRPTR]THEN BEGIN CURAREA:=226;
STRPTR:=STRPTR+1;STRSTART[STRPTR]:=POOLPTR;
END ELSE BEGIN STRPTR:=STRPTR+1;STRSTART[STRPTR]:=AREADELIMITE;
CURAREA:=MAKESTRING;END;END;
{478}PROCEDURE PACKFILENAME(N,A,E:STRNUMBER);VAR K:INTEGER;C:ASCIICODE;
J:POOLPOINTER;BEGIN K:=0;
IF(E=594)AND((STRSTART[N+1]-STRSTART[N])>6)THEN BEGIN FOR J:=STRSTART[N]
TO STRSTART[N]+2 DO BEGIN C:=STRPOOL[J];K:=K+1;
IF(C>=97)AND(C<=122)THEN C:=C-32;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
FOR J:=STRSTART[N+1]-3 TO STRSTART[N+1]-1 DO BEGIN C:=STRPOOL[J];K:=K+1;
IF(C>=97)AND(C<=122)THEN C:=C-32;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
END ELSE FOR J:=STRSTART[N]TO STRSTART[N+1]-1 DO BEGIN C:=STRPOOL[J];
K:=K+1;IF(C>=97)AND(C<=122)THEN C:=C-32;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
FOR J:=STRSTART[E]TO STRSTART[E+1]-1 DO BEGIN C:=STRPOOL[J];K:=K+1;
IF(C>=97)AND(C<=122)THEN C:=C-32;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
FOR J:=STRSTART[A]TO STRSTART[A+1]-1 DO BEGIN C:=STRPOOL[J];K:=K+1;
IF(C>=97)AND(C<=122)THEN C:=C-32;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
IF K<=FILENAMESIZE THEN NAMELENGTH:=K ELSE NAMELENGTH:=FILENAMESIZE;
FOR K:=NAMELENGTH+1 TO FILENAMESIZE DO NAMEOFFILE[K]:=' ';END;
{482}PROCEDURE PACKBUFFERED(N:SMALLNUMBER;A,B:INTEGER);VAR K:INTEGER;
C:ASCIICODE;J:INTEGER;D:INTEGER;
BEGIN IF N+B-A+5>FILENAMESIZE THEN B:=A+FILENAMESIZE-N-5;K:=0;
FOR J:=A TO B DO BEGIN C:=BUFFER[J];K:=K+1;
IF(C>=97)AND(C<=122)THEN C:=C-32;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
IF B=0 THEN BEGIN D:=10;N:=18;END ELSE D:=6;
FOR J:=D TO 9 DO BEGIN C:=XORD[TEXFORMATDEF[J]];K:=K+1;
IF(C>=97)AND(C<=122)THEN C:=C-32;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
FOR J:=18-N+1 TO 18 DO BEGIN C:=XORD[TEXFORMATDEF[J]];K:=K+1;
IF(C>=97)AND(C<=122)THEN C:=C-32;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
IF K<=FILENAMESIZE THEN NAMELENGTH:=K ELSE NAMELENGTH:=FILENAMESIZE;
FOR K:=NAMELENGTH+1 TO FILENAMESIZE DO NAMEOFFILE[K]:=' ';END;
{484}PROCEDURE CURNAM(VAR CHAN:FILE;VAR S:STRING);EXTERN;
FUNCTION MAKENAMESTRI(VAR F:FILE):STRNUMBER;
VAR S:PACKED ARRAY[1..24]OF CHAR;K:1..24;BEGIN CURNAM(F,S);
BEGIN IF POOLPTR+24>POOLSIZE THEN OVERFLOW(129,POOLSIZE);END;K:=1;
WHILE ORD(S[K])<>0 DO BEGIN BEGIN STRPOOL[POOLPTR]:=XORD[S[K]];
POOLPTR:=POOLPTR+1;END;K:=K+1;END;MAKENAMESTRI:=MAKESTRING;END;
FUNCTION AMAKENAMESTR(VAR F:ALPHAFILE):STRNUMBER;
BEGIN AMAKENAMESTR:=MAKENAMESTRI(F);END;
FUNCTION BMAKENAMESTR(VAR F:BYTEFILE):STRNUMBER;
BEGIN BMAKENAMESTR:=MAKENAMESTRI(F);END;
FUNCTION WMAKENAMESTR(VAR F:WORDFILE):STRNUMBER;
BEGIN WMAKENAMESTR:=MAKENAMESTRI(F);END;{485}PROCEDURE SCANFILENAME;
LABEL 30;BEGIN BEGINNAME;{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
WHILE TRUE DO BEGIN IF(CURCMD>12)OR(CURCHR>127)THEN BEGIN BACKINPUT;
GOTO 30;END;IF NOT MORENAME(CURCHR)THEN GOTO 30;GETXTOKEN;END;
30:ENDNAME;END;{488}PROCEDURE PACKJOBNAME(S:STRNUMBER);
BEGIN CURAREA:=226;CUREXT:=S;CURNAME:=JOBNAME;
PACKFILENAME(CURNAME,CURAREA,CUREXT);END;
{489}PROCEDURE PROMPTFILENA(S,E:STRNUMBER);LABEL 30;VAR K:0..BUFSIZE;
BEGIN IF S=595 THEN PRINTNL(596)ELSE PRINTNL(597);
PRINTFILENAM(CURNAME,CURAREA,CUREXT);PRINT(598);
IF E=599 THEN SHOWCONTEXT;PRINTNL(600);PRINT(S);
IF INTERACTION<2 THEN FATALERROR(601);BREAKIN(TERMIN,TRUE);
BEGIN PRINT(384);TERMINPUT;END;{490}BEGIN BEGINNAME;K:=FIRST;
WHILE(BUFFER[K]=32)AND(K<LAST)DO K:=K+1;
WHILE TRUE DO BEGIN IF K=LAST THEN GOTO 30;
IF NOT MORENAME(BUFFER[K])THEN GOTO 30;K:=K+1;END;30:ENDNAME;END;
IF CUREXT=226 THEN CUREXT:=E;PACKFILENAME(CURNAME,CURAREA,CUREXT);END;
{493}PROCEDURE OPENLOGFILE;VAR OLDSETTING:0..21;K:0..BUFSIZE;
MONTHS:PACKED ARRAY[1..36]OF CHAR;BEGIN OLDSETTING:=SELECTOR;
IF JOBNAME=0 THEN JOBNAME:=604;PACKJOBNAME(605);
WHILE NOT AOPENOUT(LOGFILE)DO PROMPTFILENA(606,605);SELECTOR:=18;
{494}BEGIN WRITE(LOGFILE,'This is TeX, WAITS Version 0.9');
PRINT(FORMATIDENT);PRINT(608);PRINTINT(EQTB[3869].INT);PRINTCHAR(32);
MONTHS:='JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
FOR K:=3*EQTB[3870].INT-2 TO 3*EQTB[3870].INT DO WRITE(LOGFILE,MONTHS[K]
);PRINTCHAR(32);PRINTINT(EQTB[3871].INT);PRINTCHAR(32);
PRINTTWO(EQTB[3868].INT DIV 60);PRINTCHAR(58);
PRINTTWO(EQTB[3868].INT MOD 60);END;INPUTSTACK[INPUTPTR]:=CURINPUT;
PRINTNL(607);FOR K:=1 TO INPUTSTACK[0].LIMITFIELD DO PRINT(BUFFER[K-1]);
PRINTLN;SELECTOR:=OLDSETTING+2;END;{495}PROCEDURE STARTINPUT;LABEL 30;
BEGIN SCANFILENAME;IF CUREXT=226 THEN CUREXT:=599;
PACKFILENAME(CURNAME,CURAREA,CUREXT);WHILE TRUE DO BEGIN BEGINFILEREA;
IF AOPENIN(INPUTFILE[CURINPUT.INDEXFIELD])THEN GOTO 30;
PACKFILENAME(CURNAME,593,CUREXT);
IF AOPENIN(INPUTFILE[CURINPUT.INDEXFIELD])THEN GOTO 30;ENDFILEREADI;
PROMPTFILENA(595,599);END;
30:CURINPUT.NAMEFIELD:=AMAKENAMESTR(INPUTFILE[CURINPUT.INDEXFIELD]);
CURINPUT.STATEFIELD:=33;IF JOBNAME=0 THEN BEGIN JOBNAME:=CURNAME;
OPENLOGFILE;END;
IF TERMOFFSET+(STRSTART[CURINPUT.NAMEFIELD+1]-STRSTART[CURINPUT.
NAMEFIELD])>MAXPRINTLINE-2 THEN PRINTLN ELSE IF(TERMOFFSET>0)OR(
FILEOFFSET>0)THEN PRINTCHAR(32);PRINTCHAR(40);PRINT(CURINPUT.NAMEFIELD);
BREAK(TERMOUT);
{496}BEGIN IF EOLN(INPUTFILE[CURINPUT.INDEXFIELD])THEN LAST:=CURINPUT.
STARTFIELD ELSE BEGIN BUFFER[CURINPUT.STARTFIELD]:=XORD[INPUTFILE[
CURINPUT.INDEXFIELD]↑];FIRST:=CURINPUT.STARTFIELD+1;
IF NOT INPUTLN(INPUTFILE[CURINPUT.INDEXFIELD])THEN CONFUSION(336);
IF(LAST-CURINPUT.STARTFIELD=29)AND(BUFFER[CURINPUT.STARTFIELD]=67)AND(
BUFFER[CURINPUT.STARTFIELD+8]=22)THEN BEGIN WHILE(INPUTFILE[CURINPUT.
INDEXFIELD]↑<>CHR(12))AND(NOT EOF(INPUTFILE[CURINPUT.INDEXFIELD]))DO
BEGIN READLN(INPUTFILE[CURINPUT.INDEXFIELD]);
READ(INPUTFILE[CURINPUT.INDEXFIELD],AUXBUF:TEMPPTR);END;
BUFFER[CURINPUT.STARTFIELD]:=12;LAST:=CURINPUT.STARTFIELD+1;END;END;
FIRMUPTHELIN;BUFFER[CURINPUT.LIMITFIELD]:=13;
FIRST:=CURINPUT.LIMITFIELD+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
LINE:=1;PAGE:=1;END;END;{516}FUNCTION READFONTINFO(U:HALFWORD;
NOM,AIRE:STRNUMBER;S:SCALED):INTERNALFONT;LABEL 30,11,45;
VAR K:0..FONTMEMSIZE;FILEOPENED:BOOLEAN;
LF,LH,BC,EC,NW,NH,ND,NI,NL,NK,NE,NP:HALFWORD;F:INTERNALFONT;
G:INTERNALFONT;A,B,C,D:EIGHTBITS;QW:FOURQUARTERS;SW:SCALED;Z:SCALED;
ALPHA:INTEGER;BETA:1..16;BEGIN G:=0;{518}{519}FILEOPENED:=FALSE;
IF AIRE=226 THEN PACKFILENAME(NOM,593,594)ELSE PACKFILENAME(NOM,AIRE,594
);IF NOT BOPENIN(TFMFILE)THEN GOTO 11;FILEOPENED:=TRUE;
{521}BEGIN BEGIN LF:=TFMFILE↑;IF LF>127 THEN GOTO 11;GET(TFMFILE);
LF:=LF*256+TFMFILE↑;END;GET(TFMFILE);BEGIN LH:=TFMFILE↑;
IF LH>127 THEN GOTO 11;GET(TFMFILE);LH:=LH*256+TFMFILE↑;END;
GET(TFMFILE);BEGIN BC:=TFMFILE↑;IF BC>127 THEN GOTO 11;GET(TFMFILE);
BC:=BC*256+TFMFILE↑;END;GET(TFMFILE);BEGIN EC:=TFMFILE↑;
IF EC>127 THEN GOTO 11;GET(TFMFILE);EC:=EC*256+TFMFILE↑;END;
IF(BC>EC+1)OR(EC>255)THEN GOTO 11;GET(TFMFILE);BEGIN NW:=TFMFILE↑;
IF NW>127 THEN GOTO 11;GET(TFMFILE);NW:=NW*256+TFMFILE↑;END;
GET(TFMFILE);BEGIN NH:=TFMFILE↑;IF NH>127 THEN GOTO 11;GET(TFMFILE);
NH:=NH*256+TFMFILE↑;END;GET(TFMFILE);BEGIN ND:=TFMFILE↑;
IF ND>127 THEN GOTO 11;GET(TFMFILE);ND:=ND*256+TFMFILE↑;END;
GET(TFMFILE);BEGIN NI:=TFMFILE↑;IF NI>127 THEN GOTO 11;GET(TFMFILE);
NI:=NI*256+TFMFILE↑;END;GET(TFMFILE);BEGIN NL:=TFMFILE↑;
IF NL>127 THEN GOTO 11;GET(TFMFILE);NL:=NL*256+TFMFILE↑;END;
GET(TFMFILE);BEGIN NK:=TFMFILE↑;IF NK>127 THEN GOTO 11;GET(TFMFILE);
NK:=NK*256+TFMFILE↑;END;GET(TFMFILE);BEGIN NE:=TFMFILE↑;
IF NE>127 THEN GOTO 11;GET(TFMFILE);NE:=NE*256+TFMFILE↑;END;
GET(TFMFILE);BEGIN NP:=TFMFILE↑;IF NP>127 THEN GOTO 11;GET(TFMFILE);
NP:=NP*256+TFMFILE↑;END;
IF LF<>6+LH+(EC-BC+1)+NW+NH+ND+NI+NL+NK+NE+NP THEN GOTO 11;END;
{522}LF:=LF-6-LH;IF NP<7 THEN LF:=LF+7-NP;
IF(FONTPTR=FONTMAX)OR(FMEMPTR+LF>FONTMEMSIZE)THEN{523}BEGIN PRINTNL(610)
;SPRINTCS(U);PRINTCHAR(61);PRINTFILENAM(NOM,AIRE,226);
IF S<>0 THEN BEGIN PRINT(552);PRINTSCALED(S);PRINT(516);END;PRINT(618);
BEGIN HELPPTR:=4;HELPLINE[3]:=619;HELPLINE[2]:=620;HELPLINE[1]:=621;
HELPLINE[0]:=622;END;ERROR;GOTO 30;END;F:=FONTPTR+1;
CHARBASE[F]:=FMEMPTR-BC;WIDTHBASE[F]:=CHARBASE[F]+EC+1;
HEIGHTBASE[F]:=WIDTHBASE[F]+NW;DEPTHBASE[F]:=HEIGHTBASE[F]+NH;
ITALICBASE[F]:=DEPTHBASE[F]+ND;LIGKERNBASE[F]:=ITALICBASE[F]+NI;
KERNBASE[F]:=LIGKERNBASE[F]+NL;EXTENBASE[F]:=KERNBASE[F]+NK;
PARAMBASE[F]:=EXTENBASE[F]+NE;{524}BEGIN IF LH<2 THEN GOTO 11;
BEGIN GET(TFMFILE);A:=TFMFILE↑;QW.B0:=A;GET(TFMFILE);B:=TFMFILE↑;
QW.B1:=B;GET(TFMFILE);C:=TFMFILE↑;QW.B2:=C;GET(TFMFILE);D:=TFMFILE↑;
QW.B3:=D;FONTCHECK[F]:=QW;END;GET(TFMFILE);BEGIN Z:=TFMFILE↑;
IF Z>127 THEN GOTO 11;GET(TFMFILE);Z:=Z*256+TFMFILE↑;END;GET(TFMFILE);
Z:=Z*256+TFMFILE↑;GET(TFMFILE);Z:=(Z*16)+(TFMFILE↑DIV 16);
IF Z<65536 THEN GOTO 11;WHILE LH>2 DO BEGIN GET(TFMFILE);GET(TFMFILE);
GET(TFMFILE);GET(TFMFILE);LH:=LH-1;END;FONTDSIZE[F]:=Z;
IF S<>0 THEN Z:=S;FONTSIZE[F]:=Z;END;
{525}FOR K:=FMEMPTR TO WIDTHBASE[F]-1 DO BEGIN BEGIN GET(TFMFILE);
A:=TFMFILE↑;QW.B0:=A;GET(TFMFILE);B:=TFMFILE↑;QW.B1:=B;GET(TFMFILE);
C:=TFMFILE↑;QW.B2:=C;GET(TFMFILE);D:=TFMFILE↑;QW.B3:=D;
FONTINFO[K].QQQQ:=QW;END;
IF(A>=NW)OR(B DIV 16>=NH)OR(B MOD 16>=ND)OR(C DIV 4>=NI)THEN GOTO 11;
CASE C MOD 4 OF 1:IF D>=NL THEN GOTO 11;3:IF D>=NE THEN GOTO 11;
2:{526}BEGIN BEGIN IF(D<BC)OR(D>EC)THEN GOTO 11 END;
WHILE D<K+BC-FMEMPTR DO BEGIN QW:=FONTINFO[CHARBASE[F]+D].QQQQ;
IF(QW.B2 MOD 4)<>2 THEN GOTO 45;D:=QW.B3;END;
IF D=K+BC-FMEMPTR THEN GOTO 11;45:END;OTHERS:END;END;
{527}BEGIN{528}BEGIN ALPHA:=16*Z;BETA:=16;
WHILE Z>=8388608 DO BEGIN Z:=Z DIV 2;BETA:=BETA DIV 2;END;END;
FOR K:=WIDTHBASE[F]TO LIGKERNBASE[F]-1 DO BEGIN GET(TFMFILE);
A:=TFMFILE↑;GET(TFMFILE);B:=TFMFILE↑;GET(TFMFILE);C:=TFMFILE↑;
GET(TFMFILE);D:=TFMFILE↑;
SW:=(((((D*Z)DIV 256)+(C*Z))DIV 256)+(B*Z))DIV BETA;
IF A=0 THEN FONTINFO[K].INT:=SW ELSE IF A=255 THEN FONTINFO[K].INT:=SW-
ALPHA ELSE GOTO 11;END;IF FONTINFO[WIDTHBASE[F]].INT<>0 THEN GOTO 11;
IF FONTINFO[HEIGHTBASE[F]].INT<>0 THEN GOTO 11;
IF FONTINFO[DEPTHBASE[F]].INT<>0 THEN GOTO 11;
IF FONTINFO[ITALICBASE[F]].INT<>0 THEN GOTO 11;END;
{529}BEGIN FOR K:=LIGKERNBASE[F]TO KERNBASE[F]-1 DO BEGIN BEGIN GET(
TFMFILE);A:=TFMFILE↑;QW.B0:=A;GET(TFMFILE);B:=TFMFILE↑;QW.B1:=B;
GET(TFMFILE);C:=TFMFILE↑;QW.B2:=C;GET(TFMFILE);D:=TFMFILE↑;QW.B3:=D;
FONTINFO[K].QQQQ:=QW;END;BEGIN IF(B<BC)OR(B>EC)THEN GOTO 11 END;
IF C<128 THEN BEGIN IF(D<BC)OR(D>EC)THEN GOTO 11 END ELSE IF D>=NK THEN
GOTO 11;END;IF(NL>0)AND(A<128)THEN GOTO 11;
FOR K:=KERNBASE[F]TO EXTENBASE[F]-1 DO BEGIN GET(TFMFILE);A:=TFMFILE↑;
GET(TFMFILE);B:=TFMFILE↑;GET(TFMFILE);C:=TFMFILE↑;GET(TFMFILE);
D:=TFMFILE↑;SW:=(((((D*Z)DIV 256)+(C*Z))DIV 256)+(B*Z))DIV BETA;
IF A=0 THEN FONTINFO[K].INT:=SW ELSE IF A=255 THEN FONTINFO[K].INT:=SW-
ALPHA ELSE GOTO 11;END;END;
{530}FOR K:=EXTENBASE[F]TO PARAMBASE[F]-1 DO BEGIN BEGIN GET(TFMFILE);
A:=TFMFILE↑;QW.B0:=A;GET(TFMFILE);B:=TFMFILE↑;QW.B1:=B;GET(TFMFILE);
C:=TFMFILE↑;QW.B2:=C;GET(TFMFILE);D:=TFMFILE↑;QW.B3:=D;
FONTINFO[K].QQQQ:=QW;END;
IF A<>0 THEN BEGIN IF(A<BC)OR(A>EC)THEN GOTO 11 END;
IF B<>0 THEN BEGIN IF(B<BC)OR(B>EC)THEN GOTO 11 END;
IF C<>0 THEN BEGIN IF(C<BC)OR(C>EC)THEN GOTO 11 END;
BEGIN IF(D<BC)OR(D>EC)THEN GOTO 11 END;END;
{531}BEGIN FOR K:=1 TO NP DO IF K=1 THEN BEGIN GET(TFMFILE);
SW:=TFMFILE↑;IF SW>127 THEN SW:=SW-256;GET(TFMFILE);SW:=SW*256+TFMFILE↑;
GET(TFMFILE);SW:=SW*256+TFMFILE↑;GET(TFMFILE);
FONTINFO[PARAMBASE[F]].INT:=(SW*16)+(TFMFILE↑DIV 16);
END ELSE BEGIN GET(TFMFILE);A:=TFMFILE↑;GET(TFMFILE);B:=TFMFILE↑;
GET(TFMFILE);C:=TFMFILE↑;GET(TFMFILE);D:=TFMFILE↑;
SW:=(((((D*Z)DIV 256)+(C*Z))DIV 256)+(B*Z))DIV BETA;
IF A=0 THEN FONTINFO[PARAMBASE[F]+K-1].INT:=SW ELSE IF A=255 THEN
FONTINFO[PARAMBASE[F]+K-1].INT:=SW-ALPHA ELSE GOTO 11;END;
IF EOF(TFMFILE)THEN GOTO 11;
FOR K:=NP+1 TO 7 DO FONTINFO[PARAMBASE[F]+K-1].INT:=0;END;
{532}IF NP>=7 THEN FONTPARAMS[F]:=NP ELSE FONTPARAMS[F]:=7;
FONTNAME[F]:=NOM;FONTAREA[F]:=AIRE;FONTBC[F]:=BC;FONTEC[F]:=EC;
FONTGLUE[F]:=0;CHARBASE[F]:=CHARBASE[F];WIDTHBASE[F]:=WIDTHBASE[F];
LIGKERNBASE[F]:=LIGKERNBASE[F];KERNBASE[F]:=KERNBASE[F];
EXTENBASE[F]:=EXTENBASE[F];PARAMBASE[F]:=PARAMBASE[F]-1;
FMEMPTR:=FMEMPTR+LF;FONTPTR:=F;G:=F;GOTO 30;11:{517}PRINTNL(610);
SPRINTCS(U);PRINTCHAR(61);PRINTFILENAM(NOM,AIRE,226);
IF S<>0 THEN BEGIN PRINT(552);PRINTSCALED(S);PRINT(516);END;
IF FILEOPENED THEN PRINT(611)ELSE PRINT(612);BEGIN HELPPTR:=5;
HELPLINE[4]:=613;HELPLINE[3]:=614;HELPLINE[2]:=615;HELPLINE[1]:=616;
HELPLINE[0]:=617;END;ERROR;30:BCLOSE(TFMFILE);READFONTINFO:=G;END;
{537}PROCEDURE CHARWARNING(F:INTERNALFONT;C:EIGHTBITS);
BEGIN IF EQTB[3881].INT<>0 THEN BEGIN BEGINDIAGNOS;PRINTNL(631);
PRINTASCII(C);PRINT(632);PRINT(FONTNAME[F]);PRINTCHAR(33);
ENDDIAGNOSTI(FALSE);END;END;{538}FUNCTION NEWCHARACTER(F:INTERNALFONT;
C:EIGHTBITS):HALFWORD;LABEL 10;VAR P:HALFWORD;
BEGIN IF(FONTBC[F]<=C)AND(FONTEC[F]>=C)THEN IF(FONTINFO[CHARBASE[F]+C].
QQQQ.B0>0)THEN BEGIN P:=GETAVAIL;MEM[P].HH.B0:=F;MEM[P].HH.B1:=C;
NEWCHARACTER:=P;GOTO 10;END;CHARWARNING(F,C);NEWCHARACTER:=0;10:END;
{553}PROCEDURE ARYOUT(VAR F:FILE;B:PACKEDBYTES;O,C:INTEGER);EXTERN;
PROCEDURE WRITEDVI(A,B:DVIINDEX);
BEGIN ARYOUT(DVIFILE,DVIBUF,A DIV 4,(B+1-A)DIV 4);END;
{554}PROCEDURE DVISWAP;
BEGIN IF DVILIMIT=DVIBUFSIZE THEN BEGIN WRITEDVI(0,HALFBUF-1);
DVILIMIT:=HALFBUF;DVIOFFSET:=DVIOFFSET+DVIBUFSIZE;DVIPTR:=0;
END ELSE BEGIN WRITEDVI(HALFBUF,DVIBUFSIZE-1);DVILIMIT:=DVIBUFSIZE;END;
DVIGONE:=DVIGONE+HALFBUF;END;{556}PROCEDURE DVIFOUR(X:INTEGER);
BEGIN IF X>=0 THEN BEGIN DVIBUF[DVIPTR]:=X DIV 16777216;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;
END ELSE BEGIN X:=X+1073741824;X:=X+1073741824;
BEGIN DVIBUF[DVIPTR]:=(X DIV 16777216)+128;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;X:=X MOD 16777216;
BEGIN DVIBUF[DVIPTR]:=X DIV 65536;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;X:=X MOD 65536;
BEGIN DVIBUF[DVIPTR]:=X DIV 256;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=X MOD 256;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;
{557}PROCEDURE DVIPOP(L:INTEGER);
BEGIN IF(L=DVIOFFSET+DVIPTR)AND(DVIPTR>0)THEN DVIPTR:=DVIPTR-1 ELSE
BEGIN DVIBUF[DVIPTR]:=142;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;
{558}PROCEDURE DVIFONTDEF(F:INTERNALFONT);VAR K:POOLPOINTER;
BEGIN BEGIN DVIBUF[DVIPTR]:=243;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=F-1;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=FONTCHECK[F].B0;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=FONTCHECK[F].B1;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=FONTCHECK[F].B2;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=FONTCHECK[F].B3;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(FONTSIZE[F]);
DVIFOUR(FONTDSIZE[F]);
BEGIN DVIBUF[DVIPTR]:=(STRSTART[FONTAREA[F]+1]-STRSTART[FONTAREA[F]]);
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=(STRSTART[FONTNAME[F]+1]-STRSTART[FONTNAME[F]]);
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
{559}FOR K:=STRSTART[FONTAREA[F]]TO STRSTART[FONTAREA[F]+1]-1 DO BEGIN
DVIBUF[DVIPTR]:=STRPOOL[K];DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
FOR K:=STRSTART[FONTNAME[F]]TO STRSTART[FONTNAME[F]+1]-1 DO BEGIN DVIBUF
[DVIPTR]:=STRPOOL[K];DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;
END;END;{563}PROCEDURE MOVEMENT(W:SCALED;O:EIGHTBITS);
LABEL 10,40,45,2,1;VAR MSTATE:SMALLNUMBER;P,Q:HALFWORD;K:INTEGER;
BEGIN Q:=GETNODE(3);MEM[Q+1].INT:=W;MEM[Q+2].INT:=DVIOFFSET+DVIPTR;
IF O=157 THEN BEGIN MEM[Q].HH.RH:=DOWNPTR;DOWNPTR:=Q;
END ELSE BEGIN MEM[Q].HH.RH:=RIGHTPTR;RIGHTPTR:=Q;END;
{567}P:=MEM[Q].HH.RH;MSTATE:=0;
WHILE P<>0 DO BEGIN IF MEM[P+1].INT=W THEN{568}CASE MSTATE+MEM[P].HH.LH
OF 3,4,15,16:IF MEM[P+2].INT<DVIGONE THEN GOTO 45 ELSE{569}BEGIN K:=MEM[
P+2].INT-DVIOFFSET;IF K<0 THEN K:=K+DVIBUFSIZE;DVIBUF[K]:=DVIBUF[K]+5;
MEM[P].HH.LH:=1;GOTO 40;END;
5,9,11:IF MEM[P+2].INT<DVIGONE THEN GOTO 45 ELSE{570}BEGIN K:=MEM[P+2].
INT-DVIOFFSET;IF K<0 THEN K:=K+DVIBUFSIZE;DVIBUF[K]:=DVIBUF[K]+10;
MEM[P].HH.LH:=2;GOTO 40;END;1,2,8,13:GOTO 40;
OTHERS:END ELSE CASE MSTATE+MEM[P].HH.LH OF 1:MSTATE:=6;2:MSTATE:=12;
8,13:GOTO 45;OTHERS:END;P:=MEM[P].HH.RH;END;45:;{566}MEM[Q].HH.LH:=3;
IF ABS(W)>=8388608 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=O+3;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(W);GOTO 10;
END;IF ABS(W)>=32768 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=O+2;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
IF W<0 THEN W:=W+16777216;BEGIN DVIBUF[DVIPTR]:=W DIV 65536;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;W:=W MOD 65536;
GOTO 2;END;IF ABS(W)>=128 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=O+1;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
IF W<0 THEN W:=W+65536;GOTO 2;END;BEGIN DVIBUF[DVIPTR]:=O;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
IF W<0 THEN W:=W+256;GOTO 1;2:BEGIN DVIBUF[DVIPTR]:=W DIV 256;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
1:BEGIN DVIBUF[DVIPTR]:=W MOD 256;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;GOTO 10;
40:{565}MEM[Q].HH.LH:=MEM[P].HH.LH;
IF MEM[Q].HH.LH=1 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=O+4;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
WHILE MEM[Q].HH.RH<>P DO BEGIN Q:=MEM[Q].HH.RH;
CASE MEM[Q].HH.LH OF 3:MEM[Q].HH.LH:=5;4:MEM[Q].HH.LH:=6;OTHERS:END;END;
END ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=O+9;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
WHILE MEM[Q].HH.RH<>P DO BEGIN Q:=MEM[Q].HH.RH;
CASE MEM[Q].HH.LH OF 3:MEM[Q].HH.LH:=4;5:MEM[Q].HH.LH:=6;OTHERS:END;END;
END;10:END;{571}PROCEDURE PRUNEMOVEMEN(L:INTEGER);LABEL 30,10;
VAR P:HALFWORD;
BEGIN WHILE DOWNPTR<>0 DO BEGIN IF MEM[DOWNPTR+2].INT<L THEN GOTO 30;
P:=DOWNPTR;DOWNPTR:=MEM[P].HH.RH;FREENODE(P,3);END;
30:WHILE RIGHTPTR<>0 DO BEGIN IF MEM[RIGHTPTR+2].INT<L THEN GOTO 10;
P:=RIGHTPTR;RIGHTPTR:=MEM[P].HH.RH;FREENODE(P,3);END;10:END;
{574}PROCEDURE VLISTOUT;FORWARD;
{575}{1288}PROCEDURE SPECIALOUT(P:HALFWORD);VAR OLDSETTING:0..21;
K:POOLPOINTER;BEGIN IF CURH<>DVIH THEN BEGIN MOVEMENT(CURH-DVIH,143);
DVIH:=CURH;END;IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);
DVIV:=CURV;END;OLDSETTING:=SELECTOR;SELECTOR:=21;
SHOWTOKENLIS(MEM[MEM[P+1].HH.RH].HH.RH,0,POOLSIZE-POOLPTR);
SELECTOR:=OLDSETTING;
BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE);END;
IF(POOLPTR-STRSTART[STRPTR])<256 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=239;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=(POOLPTR-STRSTART[STRPTR]);DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
END ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=242;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR((POOLPTR-STRSTART[STRPTR]));
END;
FOR K:=STRSTART[STRPTR]TO POOLPTR-1 DO BEGIN DVIBUF[DVIPTR]:=STRPOOL[K];
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
POOLPTR:=STRSTART[STRPTR];END;{1290}PROCEDURE WRITEOUT(P:HALFWORD);
VAR OLDSETTING:0..21;OLDMODE:INTEGER;J:SMALLNUMBER;Q,R:HALFWORD;
BEGIN{1291}Q:=GETAVAIL;MEM[Q].HH.LH:=637;R:=GETAVAIL;MEM[R].HH.LH:=2592;
MEM[Q].HH.RH:=R;MEM[R].HH.RH:=GETAVAIL;R:=MEM[R].HH.RH;
MEM[R].HH.LH:=6461;BEGINTOKENLI(Q,4);BEGINTOKENLI(MEM[P+1].HH.RH,11);
Q:=GETAVAIL;MEM[Q].HH.LH:=379;BEGINTOKENLI(Q,4);
OLDMODE:=CURLIST.MODEFIELD;CURLIST.MODEFIELD:=0;CSPTR:=WRITELOC;
Q:=SCANTOKS(FALSE,TRUE);GETTOKEN;IF CURTOK<>6461 THEN CONFUSION(1091);
ENDTOKENLIST;CURLIST.MODEFIELD:=OLDMODE;OLDSETTING:=SELECTOR;
J:=MEM[P+1].HH.LH;IF WRITEOPEN[J]THEN SELECTOR:=J ELSE PRINTNL(226);
SHOWTOKENLIS(MEM[DEFREF].HH.RH,0,BUFSIZE-10);PRINTLN;FLUSHLIST(DEFREF);
SELECTOR:=OLDSETTING;END;{1292}PROCEDURE OUTWHAT(P:HALFWORD);
VAR J:SMALLNUMBER;
BEGIN CASE MEM[P].HH.B1 OF 0,1,2:{1293}IF NOT DOINGLEADERS THEN BEGIN J
:=MEM[P+1].HH.LH;
IF MEM[P].HH.B1=1 THEN WRITEOUT(P)ELSE BEGIN IF WRITEOPEN[J]THEN ACLOSE(
WRITEFILE[J]);
IF MEM[P].HH.B1=2 THEN WRITEOPEN[J]:=FALSE ELSE BEGIN CURNAME:=MEM[P+1].
HH.RH;CURAREA:=MEM[P+2].HH.LH;CUREXT:=MEM[P+2].HH.RH;
IF CUREXT=226 THEN CUREXT:=599;PACKFILENAME(CURNAME,CURAREA,CUREXT);
WHILE NOT AOPENOUT(WRITEFILE[J])DO PROMPTFILENA(1102,599);
WRITEOPEN[J]:=TRUE;END;END;END;3:SPECIALOUT(P);
OTHERS:CONFUSION(1101)END;END;PROCEDURE HLISTOUT;LABEL 21,13,14,15;
VAR BASELINE:SCALED;SAVEH,SAVEV:SCALED;THISBOX:HALFWORD;GORDER:GLUEORD;
GSIGN:0..2;P:HALFWORD;SAVELOC:INTEGER;LEADERBOX:HALFWORD;
LEADERWD:SCALED;OUTERDOINGLE:BOOLEAN;EDGE:SCALED;BEGIN THISBOX:=TEMPPTR;
GORDER:=MEM[THISBOX+5].HH.B1;GSIGN:=MEM[THISBOX+5].HH.B0;
P:=MEM[THISBOX+5].HH.RH;CURS:=CURS+1;
IF CURS>0 THEN BEGIN DVIBUF[DVIPTR]:=141;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;IF CURS>MAXPUSH THEN MAXPUSH:=CURS;
SAVELOC:=DVIOFFSET+DVIPTR;BASELINE:=CURV;
WHILE P<>0 DO{576}21:IF(P>25000)THEN BEGIN IF CURH<>DVIH THEN BEGIN
MOVEMENT(CURH-DVIH,143);DVIH:=CURH;END;
IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
REPEAT F:=MEM[P].HH.B0;C:=MEM[P].HH.B1;
IF F<>DVIF THEN{577}BEGIN IF NOT FONTUSED[F]THEN BEGIN DVIFONTDEF(F);
FONTUSED[F]:=TRUE;END;IF F<=64 THEN BEGIN DVIBUF[DVIPTR]:=F+170;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;
END ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=235;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=F-1;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;DVIF:=F;END;
IF C<128 THEN BEGIN DVIBUF[DVIPTR]:=C;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=128;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=C;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;
CURH:=CURH+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+C].QQQQ.B0].INT;
P:=MEM[P].HH.RH;UNTIL NOT(P>25000);DVIH:=CURH;
END ELSE{578}BEGIN CASE MEM[P].HH.B0 OF 0,1:{579}IF MEM[P+5].HH.RH=0
THEN CURH:=CURH+MEM[P+1].INT ELSE BEGIN SAVEH:=DVIH;SAVEV:=DVIV;
CURV:=BASELINE+MEM[P+4].INT;TEMPPTR:=P;EDGE:=CURH;
IF MEM[P].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;DVIH:=SAVEH;DVIV:=SAVEV;
CURH:=EDGE+MEM[P+1].INT;CURV:=BASELINE;END;2:BEGIN RULEHT:=MEM[P+3].INT;
RULEDP:=MEM[P+2].INT;RULEWD:=MEM[P+1].INT;GOTO 14;END;
8:{1286}OUTWHAT(P);10:{581}BEGIN G:=MEM[P+1].HH.LH;RULEWD:=MEM[G+1].INT;
IF GSIGN<>0 THEN BEGIN IF GSIGN=1 THEN BEGIN IF MEM[G].HH.B0=GORDER THEN
RULEWD:=RULEWD+ROUND(MEM[THISBOX+6].GR*MEM[G+2].INT);
END ELSE BEGIN IF MEM[G].HH.B1=GORDER THEN RULEWD:=RULEWD-ROUND(MEM[
THISBOX+6].GR*MEM[G+3].INT);END;END;
IF MEM[P].HH.B1>=100 THEN{582}BEGIN LEADERBOX:=MEM[P+1].HH.RH;
IF MEM[LEADERBOX].HH.B0=2 THEN BEGIN RULEHT:=MEM[LEADERBOX+3].INT;
RULEDP:=MEM[LEADERBOX+2].INT;GOTO 14;END;LEADERWD:=MEM[LEADERBOX+1].INT;
IF(LEADERWD>0)AND(RULEWD>0)THEN BEGIN EDGE:=CURH+RULEWD;
{583}IF MEM[P].HH.B1=100 THEN BEGIN SAVEH:=CURH;
CURH:=LEADERWD*(CURH DIV LEADERWD);
IF CURH<SAVEH THEN CURH:=CURH+LEADERWD;
END ELSE BEGIN LQ:=RULEWD DIV LEADERWD;LR:=RULEWD MOD LEADERWD;
IF MEM[P].HH.B1=101 THEN CURH:=CURH+(LR DIV 2)ELSE BEGIN LX:=(2*LR+LQ+1)
DIV(2*LQ+2);LEADERWD:=LEADERWD+LX;CURH:=CURH+((LR-(LQ-1)*LX)DIV 2);END;
END;
WHILE CURH+LEADERWD<=EDGE DO{584}BEGIN CURV:=BASELINE+MEM[LEADERBOX+4].
INT;IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
SAVEV:=DVIV;IF CURH<>DVIH THEN BEGIN MOVEMENT(CURH-DVIH,143);DVIH:=CURH;
END;SAVEH:=DVIH;TEMPPTR:=LEADERBOX;OUTERDOINGLE:=DOINGLEADERS;
DOINGLEADERS:=TRUE;
IF MEM[LEADERBOX].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;
DOINGLEADERS:=OUTERDOINGLE;DVIV:=SAVEV;DVIH:=SAVEH;CURV:=SAVEV;
CURH:=SAVEH+LEADERWD;END;CURH:=EDGE;GOTO 15;END;END;GOTO 13;END;
11,9:CURH:=CURH+MEM[P+1].INT;6:{606}BEGIN MEM[25012]:=MEM[P+1];
MEM[25012].HH.RH:=MEM[P].HH.RH;P:=25012;GOTO 21;END;OTHERS:END;GOTO 15;
14:{580}IF(RULEHT=-1073741824)THEN RULEHT:=MEM[THISBOX+3].INT;
IF(RULEDP=-1073741824)THEN RULEDP:=MEM[THISBOX+2].INT;
RULEHT:=RULEHT+RULEDP;
IF(RULEHT>0)AND(RULEWD>0)THEN BEGIN IF CURH<>DVIH THEN BEGIN MOVEMENT(
CURH-DVIH,143);DVIH:=CURH;END;CURV:=BASELINE+RULEDP;
IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
BEGIN DVIBUF[DVIPTR]:=132;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(RULEHT);DVIFOUR(RULEWD);
CURV:=BASELINE;DVIH:=DVIH+RULEWD;END;13:CURH:=CURH+RULEWD;
15:P:=MEM[P].HH.RH;END;PRUNEMOVEMEN(SAVELOC);
IF CURS>0 THEN DVIPOP(SAVELOC);CURS:=CURS-1;END;{585}PROCEDURE VLISTOUT;
LABEL 13,14,15;VAR LEFTEDGE:SCALED;SAVEH,SAVEV:SCALED;THISBOX:HALFWORD;
GORDER:GLUEORD;GSIGN:0..2;P:HALFWORD;SAVELOC:INTEGER;LEADERBOX:HALFWORD;
LEADERHT:SCALED;OUTERDOINGLE:BOOLEAN;EDGE:SCALED;BEGIN THISBOX:=TEMPPTR;
GORDER:=MEM[THISBOX+5].HH.B1;GSIGN:=MEM[THISBOX+5].HH.B0;
P:=MEM[THISBOX+5].HH.RH;CURS:=CURS+1;
IF CURS>0 THEN BEGIN DVIBUF[DVIPTR]:=141;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;IF CURS>MAXPUSH THEN MAXPUSH:=CURS;
SAVELOC:=DVIOFFSET+DVIPTR;LEFTEDGE:=CURH;CURV:=CURV-MEM[THISBOX+3].INT;
WHILE P<>0 DO{586}BEGIN IF(P>25000)THEN CONFUSION(634)ELSE{587}BEGIN
CASE MEM[P].HH.B0 OF 0,1:{588}IF MEM[P+5].HH.RH=0 THEN CURV:=CURV+MEM[P
+3].INT+MEM[P+2].INT ELSE BEGIN CURV:=CURV+MEM[P+3].INT;
IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
SAVEH:=DVIH;SAVEV:=DVIV;CURH:=LEFTEDGE+MEM[P+4].INT;TEMPPTR:=P;
IF MEM[P].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;DVIH:=SAVEH;DVIV:=SAVEV;
CURV:=SAVEV+MEM[P+2].INT;CURH:=LEFTEDGE;END;
2:BEGIN RULEHT:=MEM[P+3].INT;RULEDP:=MEM[P+2].INT;RULEWD:=MEM[P+1].INT;
GOTO 14;END;8:{1285}OUTWHAT(P);10:{590}BEGIN G:=MEM[P+1].HH.LH;
RULEHT:=MEM[G+1].INT;
IF GSIGN<>0 THEN BEGIN IF GSIGN=1 THEN BEGIN IF MEM[G].HH.B0=GORDER THEN
RULEHT:=RULEHT+ROUND(MEM[THISBOX+6].GR*MEM[G+2].INT);
END ELSE BEGIN IF MEM[G].HH.B1=GORDER THEN RULEHT:=RULEHT-ROUND(MEM[
THISBOX+6].GR*MEM[G+3].INT);END;END;
IF MEM[P].HH.B1>=100 THEN{591}BEGIN LEADERBOX:=MEM[P+1].HH.RH;
IF MEM[LEADERBOX].HH.B0=2 THEN BEGIN RULEWD:=MEM[LEADERBOX+1].INT;
RULEDP:=0;GOTO 14;END;
LEADERHT:=MEM[LEADERBOX+3].INT+MEM[LEADERBOX+2].INT;
IF(LEADERHT>0)AND(RULEHT>0)THEN BEGIN EDGE:=CURV+RULEHT;
{592}IF MEM[P].HH.B1=100 THEN BEGIN SAVEV:=CURV;
CURV:=LEADERHT*(CURV DIV LEADERHT);
IF CURV<SAVEV THEN CURV:=CURV+LEADERHT;
END ELSE BEGIN LQ:=RULEHT DIV LEADERHT;LR:=RULEHT MOD LEADERHT;
IF MEM[P].HH.B1=101 THEN CURV:=CURV+(LR DIV 2)ELSE BEGIN LX:=(2*LR+LQ+1)
DIV(2*LQ+2);LEADERHT:=LEADERHT+LX;CURV:=CURV+((LR-(LQ-1)*LX)DIV 2);END;
END;
WHILE CURV+LEADERHT<=EDGE DO{593}BEGIN CURH:=LEFTEDGE+MEM[LEADERBOX+4].
INT;IF CURH<>DVIH THEN BEGIN MOVEMENT(CURH-DVIH,143);DVIH:=CURH;END;
SAVEH:=DVIH;CURV:=CURV+MEM[LEADERBOX+3].INT;
IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
SAVEV:=DVIV;TEMPPTR:=LEADERBOX;OUTERDOINGLE:=DOINGLEADERS;
DOINGLEADERS:=TRUE;
IF MEM[LEADERBOX].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;
DOINGLEADERS:=OUTERDOINGLE;DVIV:=SAVEV;DVIH:=SAVEH;CURH:=SAVEH;
CURV:=SAVEV-MEM[LEADERBOX+3].INT+LEADERHT;END;CURV:=EDGE;GOTO 15;END;
END;GOTO 13;END;11:CURV:=CURV+MEM[P+1].INT;OTHERS:END;GOTO 15;
14:{589}IF(RULEWD=-1073741824)THEN RULEWD:=MEM[THISBOX+1].INT;
RULEHT:=RULEHT+RULEDP;CURV:=CURV+RULEHT;
IF(RULEHT>0)AND(RULEWD>0)THEN BEGIN IF CURH<>DVIH THEN BEGIN MOVEMENT(
CURH-DVIH,143);DVIH:=CURH;END;
IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
BEGIN DVIBUF[DVIPTR]:=137;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(RULEHT);DVIFOUR(RULEWD);END;
GOTO 15;13:CURV:=CURV+RULEHT;END;15:P:=MEM[P].HH.RH;END;
PRUNEMOVEMEN(SAVELOC);IF CURS>0 THEN DVIPOP(SAVELOC);CURS:=CURS-1;END;
{594}PROCEDURE SHIPOUT(P:HALFWORD);LABEL 30;VAR PAGELOC:INTEGER;
J,K:0..9;S:POOLPOINTER;OLDSETTING:0..21;
BEGIN IF EQTB[3880].INT<>0 THEN BEGIN PRINTNL(226);PRINTLN;PRINT(635);
END;IF TERMOFFSET>MAXPRINTLINE-9 THEN PRINTLN ELSE IF(TERMOFFSET>0)OR(
FILEOFFSET>0)THEN PRINTCHAR(32);PRINTCHAR(91);J:=9;
WHILE(EQTB[3887+J].INT=0)AND(J>0)DO J:=J-1;
FOR K:=0 TO J DO BEGIN PRINTINT(EQTB[3887+K].INT);
IF K<J THEN PRINTCHAR(46);END;BREAK(TERMOUT);
IF EQTB[3880].INT<>0 THEN BEGIN PRINTCHAR(93);BEGINDIAGNOS;SHOWBOX(P);
ENDDIAGNOSTI(TRUE);END;
{596}{597}IF(MEM[P+3].INT>1073741823)OR(MEM[P+2].INT>1073741823)OR(MEM[P
+1].INT>1073741823)THEN BEGIN PRINTNL(639);BEGIN HELPPTR:=2;
HELPLINE[1]:=640;HELPLINE[0]:=641;END;ERROR;
IF EQTB[3880].INT=0 THEN BEGIN BEGINDIAGNOS;PRINTNL(642);SHOWBOX(P);
ENDDIAGNOSTI(TRUE);END;GOTO 30;END;
IF MEM[P+3].INT+MEM[P+2].INT>MAXV THEN MAXV:=MEM[P+3].INT+MEM[P+2].INT;
IF MEM[P+1].INT>MAXH THEN MAXH:=MEM[P+1].INT;{573}DVIH:=0;DVIV:=0;
CURH:=0;DVIF:=0;CURS:=-1;
IF OUTPUTFILENA=0 THEN BEGIN IF JOBNAME=0 THEN OPENLOGFILE;
PACKJOBNAME(602);WHILE NOT BOPENOUT(DVIFILE)DO PROMPTFILENA(603,602);
OUTPUTFILENA:=BMAKENAMESTR(DVIFILE);END;
IF TOTALPAGES=0 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=247;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=2;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(25400000);
DVIFOUR(473628672);PREPAREMAG;DVIFOUR(EQTB[3865].INT);
OLDSETTING:=SELECTOR;SELECTOR:=21;PRINT(633);PRINTINT(EQTB[3871].INT);
PRINTCHAR(46);PRINTTWO(EQTB[3870].INT);PRINTCHAR(46);
PRINTTWO(EQTB[3869].INT);PRINTCHAR(58);PRINTTWO(EQTB[3868].INT DIV 60);
PRINTTWO(EQTB[3868].INT MOD 60);SELECTOR:=OLDSETTING;
BEGIN DVIBUF[DVIPTR]:=(POOLPTR-STRSTART[STRPTR]);DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
FOR S:=STRSTART[STRPTR]TO POOLPTR-1 DO BEGIN DVIBUF[DVIPTR]:=STRPOOL[S];
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
POOLPTR:=STRSTART[STRPTR];END;PAGELOC:=DVIOFFSET+DVIPTR;
BEGIN DVIBUF[DVIPTR]:=139;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
FOR K:=0 TO 9 DO DVIFOUR(EQTB[3887+K].INT);DVIFOUR(LASTBOP);
LASTBOP:=PAGELOC;CURV:=MEM[P+3].INT;TEMPPTR:=P;
IF MEM[P].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;BEGIN DVIBUF[DVIPTR]:=140;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
TOTALPAGES:=TOTALPAGES+1;30:;IF EQTB[3880].INT=0 THEN PRINTCHAR(93);
DEADCYCLES:=0;BREAK(TERMOUT);
{595}IF EQTB[3879].INT>1 THEN BEGIN PRINTNL(636);PRINTINT(VARUSED);
PRINTCHAR(38);PRINTINT(DYNUSED);PRINTCHAR(59);END;FLUSHNODELIS(P);
IF EQTB[3879].INT>1 THEN BEGIN PRINT(637);PRINTINT(VARUSED);
PRINTCHAR(38);PRINTINT(DYNUSED);PRINT(638);PRINTINT(MAXVARUSED);
PRINTCHAR(38);PRINTINT(MEMEND-24999);PRINTLN;END;;END;
{601}PROCEDURE SCANSPEC;LABEL 40;
BEGIN IF SCANKEYWORD(649)THEN SAVESTACK[SAVEPTR+0].INT:=0 ELSE IF
SCANKEYWORD(650)THEN SAVESTACK[SAVEPTR+0].INT:=1 ELSE BEGIN SAVESTACK[
SAVEPTR+0].INT:=1;SAVESTACK[SAVEPTR+1].INT:=0;GOTO 40;END;
SCANDIMEN(FALSE,FALSE,FALSE);SAVESTACK[SAVEPTR+1].INT:=CURVAL;
40:SAVEPTR:=SAVEPTR+2;SCANLEFTBRAC;END;{603}FUNCTION HPACK(P:HALFWORD;
W:SCALED;M:SMALLNUMBER):HALFWORD;LABEL 21,50,10;VAR R:HALFWORD;
Q:HALFWORD;H,D,X:SCALED;S:SCALED;G:HALFWORD;O:GLUEORD;F:INTERNALFONT;
I:FOURQUARTERS;HD:EIGHTBITS;T:HALFWORD;B:INTEGER;BEGIN R:=GETNODE(7);
MEM[R].HH.B0:=0;MEM[R].HH.B1:=0;MEM[R+4].INT:=0;Q:=R+5;MEM[Q].HH.RH:=P;
T:=25005;H:=0;{604}D:=0;X:=0;FOR O:=0 TO 3 DO BEGIN TOTALSTRETCH[O]:=0;
TOTALSHRINK[O]:=0;END;
WHILE P<>0 DO{605}BEGIN 21:WHILE(P>25000)DO{608}BEGIN F:=MEM[P].HH.B0;
I:=FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ;HD:=I.B1;
X:=X+FONTINFO[WIDTHBASE[F]+I.B0].INT;
S:=FONTINFO[HEIGHTBASE[F]+HD DIV 16].INT;IF S>H THEN H:=S;
S:=FONTINFO[DEPTHBASE[F]+HD MOD 16].INT;IF S>D THEN D:=S;
P:=MEM[P].HH.RH;END;
IF P<>0 THEN BEGIN CASE MEM[P].HH.B0 OF 0,1,2,13:{607}BEGIN X:=X+MEM[P+1
].INT;IF MEM[P].HH.B0>=2 THEN S:=0 ELSE S:=MEM[P+4].INT;
IF MEM[P+3].INT-S>H THEN H:=MEM[P+3].INT-S;
IF MEM[P+2].INT+S>D THEN D:=MEM[P+2].INT+S;END;
3,4,5:{609}BEGIN WHILE MEM[Q].HH.RH<>P DO Q:=MEM[Q].HH.RH;
IF MEM[P].HH.B0=5 THEN BEGIN MEM[T].HH.RH:=MEM[P+1].INT;
WHILE MEM[T].HH.RH<>0 DO T:=MEM[T].HH.RH;P:=MEM[P].HH.RH;
FREENODE(MEM[Q].HH.RH,2);END ELSE BEGIN MEM[T].HH.RH:=P;T:=P;
P:=MEM[P].HH.RH;END;MEM[Q].HH.RH:=P;P:=Q;END;8:{1280};
10:{610}BEGIN G:=MEM[P+1].HH.LH;X:=X+MEM[G+1].INT;O:=MEM[G].HH.B0;
TOTALSTRETCH[O]:=TOTALSTRETCH[O]+MEM[G+2].INT;O:=MEM[G].HH.B1;
TOTALSHRINK[O]:=TOTALSHRINK[O]+MEM[G+3].INT;END;11,9:X:=X+MEM[P+1].INT;
6:{606}BEGIN MEM[25012]:=MEM[P+1];MEM[25012].HH.RH:=MEM[P].HH.RH;
P:=25012;GOTO 21;END;OTHERS:END;P:=MEM[P].HH.RH;END;END;MEM[T].HH.RH:=0;
MEM[R+3].INT:=H;MEM[R+2].INT:=D;{611}IF M=1 THEN W:=X+W;MEM[R+1].INT:=W;
X:=W-X;IF X=0 THEN BEGIN MEM[R+5].HH.B0:=0;MEM[R+5].HH.B1:=0;
MEM[R+6].GR:=0.0;GOTO 10;
END ELSE IF X>0 THEN{612}BEGIN{613}IF TOTALSTRETCH[3]<>0 THEN O:=3 ELSE
IF TOTALSTRETCH[2]<>0 THEN O:=2 ELSE IF TOTALSTRETCH[1]<>0 THEN O:=1
ELSE O:=0;MEM[R+5].HH.B1:=O;MEM[R+5].HH.B0:=1;
IF TOTALSTRETCH[O]<>0 THEN MEM[R+6].GR:=X/TOTALSTRETCH[O]ELSE BEGIN MEM[
R+5].HH.B0:=0;MEM[R+6].GR:=0.0;END;
IF(EQTB[3874].INT<10000)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN{614}BEGIN B:=
BADNESS(X,TOTALSTRETCH[0]);IF B>EQTB[3874].INT THEN BEGIN PRINTLN;
IF B>100 THEN PRINTNL(651)ELSE PRINTNL(652);PRINT(653);PRINTINT(B);
GOTO 50;END;END;GOTO 10;
END ELSE{618}BEGIN{619}IF TOTALSHRINK[3]<>0 THEN O:=3 ELSE IF
TOTALSHRINK[2]<>0 THEN O:=2 ELSE IF TOTALSHRINK[1]<>0 THEN O:=1 ELSE O:=
0;MEM[R+5].HH.B1:=O;MEM[R+5].HH.B0:=2;
IF TOTALSHRINK[O]<>0 THEN MEM[R+6].GR:=-X/TOTALSHRINK[O]ELSE BEGIN MEM[R
+5].HH.B0:=0;MEM[R+6].GR:=0.0;END;
IF(TOTALSHRINK[O]<-X)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN BEGIN MEM[R+6].
GR:=1.0;
{620}IF(-X-TOTALSHRINK[0]>EQTB[4280].INT)OR(EQTB[3874].INT<100)THEN
BEGIN IF EQTB[4288].INT>0 THEN BEGIN WHILE MEM[Q].HH.RH<>0 DO Q:=MEM[Q].
HH.RH;MEM[Q].HH.RH:=NEWRULE;MEM[MEM[Q].HH.RH+1].INT:=EQTB[4288].INT;END;
PRINTLN;PRINTNL(658);PRINTSCALED(-X-TOTALSHRINK[0]);PRINT(659);GOTO 50;
END;
END ELSE IF(EQTB[3874].INT<100)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN{621}
BEGIN B:=BADNESS(-X,TOTALSHRINK[0]);
IF B>EQTB[3874].INT THEN BEGIN PRINTLN;PRINTNL(660);PRINTINT(B);GOTO 50;
END;END;GOTO 10;END;
50:{617}IF OUTPUTACTIVE THEN PRINT(654)ELSE BEGIN IF PARBEGINLINE<>0
THEN BEGIN PRINT(655);PRINTINT(PARBEGINLINE);PRINT(656);
END ELSE PRINT(657);PRINTINT(LINE);IF PAGE>1 THEN BEGIN PRINT(412);
PRINTINT(PAGE);END;END;PRINTLN;FONTINSHORTD:=0;
SHORTDISPLAY(MEM[R+5].HH.RH);PRINTLN;BEGINDIAGNOS;SHOWBOX(R);
ENDDIAGNOSTI(TRUE);10:HPACK:=R;END;{622}FUNCTION VPACKAGE(P:HALFWORD;
H:SCALED;M:SMALLNUMBER;L:SCALED):HALFWORD;LABEL 50,10;VAR R:HALFWORD;
W,D,X:SCALED;S:SCALED;G:HALFWORD;O:GLUEORD;B:INTEGER;
BEGIN R:=GETNODE(7);MEM[R].HH.B0:=1;MEM[R].HH.B1:=0;MEM[R+4].INT:=0;
MEM[R+5].HH.RH:=P;W:=0;{604}D:=0;X:=0;
FOR O:=0 TO 3 DO BEGIN TOTALSTRETCH[O]:=0;TOTALSHRINK[O]:=0;END;
WHILE P<>0 DO{623}BEGIN IF(P>25000)THEN CONFUSION(661)ELSE CASE MEM[P].
HH.B0 OF 0,1,2,13:{624}BEGIN X:=X+D+MEM[P+3].INT;D:=MEM[P+2].INT;
IF MEM[P].HH.B0>=2 THEN S:=0 ELSE S:=MEM[P+4].INT;
IF MEM[P+1].INT+S>W THEN W:=MEM[P+1].INT+S;END;8:{1279};10:BEGIN X:=X+D;
D:=0;{610}BEGIN G:=MEM[P+1].HH.LH;X:=X+MEM[G+1].INT;O:=MEM[G].HH.B0;
TOTALSTRETCH[O]:=TOTALSTRETCH[O]+MEM[G+2].INT;O:=MEM[G].HH.B1;
TOTALSHRINK[O]:=TOTALSHRINK[O]+MEM[G+3].INT;END;END;
11:BEGIN X:=X+D+MEM[P+1].INT;D:=0;END;OTHERS:END;P:=MEM[P].HH.RH;END;
MEM[R+1].INT:=W;IF D>L THEN BEGIN X:=X+D-L;MEM[R+2].INT:=L;
END ELSE MEM[R+2].INT:=D;{625}IF M=1 THEN H:=X+H;MEM[R+3].INT:=H;X:=H-X;
IF X=0 THEN BEGIN MEM[R+5].HH.B0:=0;MEM[R+5].HH.B1:=0;MEM[R+6].GR:=0.0;
GOTO 10;
END ELSE IF X>0 THEN{626}BEGIN{613}IF TOTALSTRETCH[3]<>0 THEN O:=3 ELSE
IF TOTALSTRETCH[2]<>0 THEN O:=2 ELSE IF TOTALSTRETCH[1]<>0 THEN O:=1
ELSE O:=0;MEM[R+5].HH.B1:=O;MEM[R+5].HH.B0:=1;
IF TOTALSTRETCH[O]<>0 THEN MEM[R+6].GR:=X/TOTALSTRETCH[O]ELSE BEGIN MEM[
R+5].HH.B0:=0;MEM[R+6].GR:=0.0;END;
IF(EQTB[3875].INT<10000)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN{627}BEGIN B:=
BADNESS(X,TOTALSTRETCH[0]);IF B>EQTB[3875].INT THEN BEGIN PRINTLN;
IF B>100 THEN PRINTNL(651)ELSE PRINTNL(652);PRINT(662);PRINTINT(B);
GOTO 50;END;END;GOTO 10;
END ELSE{629}BEGIN{619}IF TOTALSHRINK[3]<>0 THEN O:=3 ELSE IF
TOTALSHRINK[2]<>0 THEN O:=2 ELSE IF TOTALSHRINK[1]<>0 THEN O:=1 ELSE O:=
0;MEM[R+5].HH.B1:=O;MEM[R+5].HH.B0:=2;
IF TOTALSHRINK[O]<>0 THEN MEM[R+6].GR:=-X/TOTALSHRINK[O]ELSE BEGIN MEM[R
+5].HH.B0:=0;MEM[R+6].GR:=0.0;END;
IF(TOTALSHRINK[O]<-X)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN BEGIN MEM[R+6].
GR:=1.0;
{630}IF(-X-TOTALSHRINK[0]>EQTB[4281].INT)OR(EQTB[3875].INT<100)THEN
BEGIN PRINTLN;PRINTNL(663);PRINTSCALED(-X-TOTALSHRINK[0]);PRINT(664);
GOTO 50;END;
END ELSE IF(EQTB[3875].INT<100)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN{631}
BEGIN B:=BADNESS(-X,TOTALSHRINK[0]);
IF B>EQTB[3875].INT THEN BEGIN PRINTLN;PRINTNL(665);PRINTINT(B);GOTO 50;
END;END;GOTO 10;END;
50:{628}IF OUTPUTACTIVE THEN PRINT(654)ELSE BEGIN PRINT(657);
PRINTINT(LINE);IF PAGE>1 THEN BEGIN PRINT(412);PRINTINT(PAGE);END;
PRINTLN;END;BEGINDIAGNOS;SHOWBOX(R);ENDDIAGNOSTI(TRUE);10:VPACKAGE:=R;
END;{632}PROCEDURE APPENDTOVLIS(B:HALFWORD);VAR D:SCALED;P:HALFWORD;
BEGIN IF CURLIST.AUXFIELD>-65536000 THEN BEGIN D:=MEM[EQTB[2369].HH.RH+1
].INT-CURLIST.AUXFIELD-MEM[B+3].INT;
IF D<EQTB[4274].INT THEN P:=NEWPARAMGLUE(0)ELSE BEGIN P:=NEWSKIPPARAM(1)
;MEM[TEMPPTR+1].INT:=D;END;MEM[CURLIST.TAILFIELD].HH.RH:=P;
CURLIST.TAILFIELD:=P;END;MEM[CURLIST.TAILFIELD].HH.RH:=B;
CURLIST.TAILFIELD:=B;CURLIST.AUXFIELD:=MEM[B+2].INT;END;
{639}FUNCTION NEWNOAD:HALFWORD;VAR P:HALFWORD;BEGIN P:=GETNODE(4);
MEM[P].HH.B0:=22;MEM[P].HH.B1:=0;MEM[P+1].HH:=EMPTYFIELD;
MEM[P+3].HH:=EMPTYFIELD;MEM[P+2].HH:=EMPTYFIELD;NEWNOAD:=P;END;
{641}FUNCTION NEWSTYLE(S:SMALLNUMBER):HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(2);MEM[P].HH.B0:=14;MEM[P].HH.B1:=S;MEM[P+1].INT:=0;
NEWSTYLE:=P;END;{645}PROCEDURE SHOWINFO;
BEGIN SHOWNODELIST(MEM[TEMPPTR].HH.LH);END;
{655}FUNCTION FRACTIONRULE(T:SCALED):HALFWORD;VAR P:HALFWORD;
BEGIN P:=NEWRULE;MEM[P+3].INT:=T;MEM[P+2].INT:=0;FRACTIONRULE:=P;END;
{656}FUNCTION OVERBAR(B:HALFWORD;K,T:SCALED):HALFWORD;VAR P,Q:HALFWORD;
BEGIN P:=NEWKERN(K);MEM[P].HH.RH:=B;Q:=FRACTIONRULE(T);MEM[Q].HH.RH:=P;
P:=NEWKERN(T);MEM[P].HH.RH:=Q;OVERBAR:=VPACKAGE(P,0,1,1073741823);END;
{657}{660}FUNCTION CHARBOX(F:INTERNALFONT;C:QUARTERWORD):HALFWORD;
VAR Q:FOURQUARTERS;HD:EIGHTBITS;B,P:HALFWORD;
BEGIN Q:=FONTINFO[CHARBASE[F]+C].QQQQ;HD:=Q.B1;B:=NEWNULLBOX;
MEM[B+1].INT:=FONTINFO[WIDTHBASE[F]+Q.B0].INT+FONTINFO[ITALICBASE[F]+Q.
B2 DIV 4].INT;MEM[B+3].INT:=FONTINFO[HEIGHTBASE[F]+HD DIV 16].INT;
MEM[B+2].INT:=FONTINFO[DEPTHBASE[F]+HD MOD 16].INT;P:=GETAVAIL;
MEM[P].HH.B1:=C;MEM[P].HH.B0:=F;MEM[B+5].HH.RH:=P;CHARBOX:=B;END;
{662}PROCEDURE STACKINTOBOX(B:HALFWORD;F:INTERNALFONT;C:QUARTERWORD);
VAR P:HALFWORD;BEGIN P:=CHARBOX(F,C);MEM[P].HH.RH:=MEM[B+5].HH.RH;
MEM[B+5].HH.RH:=P;MEM[B+3].INT:=MEM[P+3].INT;END;
{663}FUNCTION HEIGHTPLUSDE(F:INTERNALFONT;C:QUARTERWORD):SCALED;
VAR Q:FOURQUARTERS;HD:EIGHTBITS;BEGIN Q:=FONTINFO[CHARBASE[F]+C].QQQQ;
HD:=Q.B1;
HEIGHTPLUSDE:=FONTINFO[HEIGHTBASE[F]+HD DIV 16].INT+FONTINFO[DEPTHBASE[F
]+HD MOD 16].INT;END;FUNCTION VARDELIMITER(D:HALFWORD;S:SMALLNUMBER;
V:SCALED):HALFWORD;LABEL 40,22;VAR B:HALFWORD;F,G:INTERNALFONT;
C,X,Y:QUARTERWORD;M,N:INTEGER;U:SCALED;W:SCALED;Q:FOURQUARTERS;
HD:EIGHTBITS;R:FOURQUARTERS;P:HALFWORD;Z:SMALLNUMBER;
LARGEATTEMPT:BOOLEAN;BEGIN F:=0;W:=0;LARGEATTEMPT:=FALSE;
Z:=MEM[D].QQQQ.B0;X:=MEM[D].QQQQ.B1;
WHILE TRUE DO BEGIN{658}IF(Z<>0)OR(X<>0)THEN BEGIN Z:=Z+S+16;
REPEAT Z:=Z-16;G:=EQTB[3160+Z].HH.RH;IF G<>0 THEN{659}BEGIN Y:=X;
22:IF(Y>=FONTBC[G])AND(Y<=FONTEC[G])THEN BEGIN Q:=FONTINFO[CHARBASE[G]+Y
].QQQQ;IF(Q.B0>0)THEN BEGIN IF(Q.B2 MOD 4)=3 THEN BEGIN F:=G;C:=Y;
GOTO 40;END;HD:=Q.B1;
U:=FONTINFO[HEIGHTBASE[G]+HD DIV 16].INT+FONTINFO[DEPTHBASE[G]+HD MOD 16
].INT;IF U>W THEN BEGIN F:=G;C:=Y;W:=U;IF U>=V THEN GOTO 40;END;
IF(Q.B2 MOD 4)=2 THEN BEGIN Y:=Q.B3;GOTO 22;END;END;END;END;UNTIL Z<16;
END;IF LARGEATTEMPT THEN GOTO 40;LARGEATTEMPT:=TRUE;Z:=MEM[D].QQQQ.B2;
X:=MEM[D].QQQQ.B3;END;
40:IF F<>0 THEN{661}IF(Q.B2 MOD 4)=3 THEN{664}BEGIN B:=NEWNULLBOX;
MEM[B].HH.B0:=1;R:=FONTINFO[EXTENBASE[F]+Q.B3].QQQQ;{665}C:=R.B3;
U:=HEIGHTPLUSDE(F,C);W:=0;Q:=FONTINFO[CHARBASE[F]+C].QQQQ;
MEM[B+1].INT:=FONTINFO[WIDTHBASE[F]+Q.B0].INT+FONTINFO[ITALICBASE[F]+Q.
B2 DIV 4].INT;C:=R.B2;IF C<>0 THEN W:=W+HEIGHTPLUSDE(F,C);C:=R.B1;
IF C<>0 THEN W:=W+HEIGHTPLUSDE(F,C);C:=R.B0;
IF C<>0 THEN W:=W+HEIGHTPLUSDE(F,C);N:=0;
IF U>0 THEN WHILE W<V DO BEGIN W:=W+U;N:=N+1;IF R.B1<>0 THEN W:=W+U;END;
C:=R.B2;IF C<>0 THEN STACKINTOBOX(B,F,C);C:=R.B3;
FOR M:=1 TO N DO STACKINTOBOX(B,F,C);C:=R.B1;
IF C<>0 THEN BEGIN STACKINTOBOX(B,F,C);C:=R.B3;
FOR M:=1 TO N DO STACKINTOBOX(B,F,C);END;C:=R.B0;
IF C<>0 THEN STACKINTOBOX(B,F,C);MEM[B+2].INT:=W-MEM[B+3].INT;
END ELSE B:=CHARBOX(F,C)ELSE BEGIN B:=NEWNULLBOX;
MEM[B+1].INT:=EQTB[4283].INT;END;
MEM[B+4].INT:=HALF(MEM[B+3].INT-MEM[B+2].INT)-FONTINFO[22+PARAMBASE[EQTB
[3162+S].HH.RH]].INT;VARDELIMITER:=B;END;{666}FUNCTION REBOX(B:HALFWORD;
W:SCALED):HALFWORD;VAR P:HALFWORD;
BEGIN IF(MEM[B+1].INT<>W)AND(MEM[B+5].HH.RH<>0)THEN BEGIN P:=MEM[B+5].HH
.RH;FREENODE(B,7);B:=NEWGLUE(12);MEM[B].HH.RH:=P;
WHILE MEM[P].HH.RH<>0 DO P:=MEM[P].HH.RH;MEM[P].HH.RH:=NEWGLUE(12);
REBOX:=HPACK(B,W,0);END ELSE BEGIN MEM[B+1].INT:=W;REBOX:=B;END;END;
{667}FUNCTION MATHGLUE(G:HALFWORD;M:SCALED):HALFWORD;VAR P:HALFWORD;
N:INTEGER;F:SCALED;BEGIN N:=XOVERN(M,65536);F:=REMAINDER;P:=GETNODE(4);
MEM[P+1].INT:=NXPLUSY(N,MEM[G+1].INT,XNOVERD(MEM[G+1].INT,F,65536));
MEM[P].HH.B0:=MEM[G].HH.B0;
IF MEM[P].HH.B0=0 THEN MEM[P+2].INT:=NXPLUSY(N,MEM[G+2].INT,XNOVERD(MEM[
G+2].INT,F,65536))ELSE MEM[P+2].INT:=MEM[G+2].INT;
MEM[P].HH.B1:=MEM[G].HH.B1;
IF MEM[P].HH.B1=0 THEN MEM[P+3].INT:=NXPLUSY(N,MEM[G+3].INT,XNOVERD(MEM[
G+3].INT,F,65536))ELSE MEM[P+3].INT:=MEM[G+3].INT;MATHGLUE:=P;END;
{668}PROCEDURE MATHKERN(P:HALFWORD;M:SCALED);VAR N:INTEGER;F:SCALED;
BEGIN IF MEM[P].HH.B1=99 THEN BEGIN N:=XOVERN(M,65536);F:=REMAINDER;
MEM[P+1].INT:=NXPLUSY(N,MEM[P+1].INT,XNOVERD(MEM[P+1].INT,F,65536));
MEM[P].HH.B1:=0;END;END;{669}PROCEDURE FLUSHMATH;
BEGIN FLUSHNODELIS(MEM[CURLIST.HEADFIELD].HH.RH);
FLUSHNODELIS(CURLIST.AUXFIELD);MEM[CURLIST.HEADFIELD].HH.RH:=0;
CURLIST.TAILFIELD:=CURLIST.HEADFIELD;CURLIST.AUXFIELD:=0;END;
{671}PROCEDURE MLISTTOHLIST;FORWARD;FUNCTION CLEANBOX(P:HALFWORD;
S:SMALLNUMBER):HALFWORD;LABEL 40;VAR Q:HALFWORD;SAVESTYLE:SMALLNUMBER;
BEGIN CASE MEM[P].HH.RH OF 1:BEGIN CURMLIST:=NEWNOAD;
MEM[CURMLIST+1]:=MEM[P];MEM[CURMLIST].HH.B0:=15;END;
2:BEGIN Q:=MEM[P].HH.LH;GOTO 40;END;3:CURMLIST:=MEM[P].HH.LH;
OTHERS:BEGIN Q:=NEWNULLBOX;GOTO 40;END END;SAVESTYLE:=CURSTYLE;
CURSTYLE:=S;MLISTPENALTI:=FALSE;MLISTTOHLIST;Q:=MEM[25003].HH.RH;
CURSTYLE:=SAVESTYLE;
{654}BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)
DIV 2);
CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT,18);
END;
40:IF(Q>25000)OR(Q=0)THEN CLEANBOX:=HPACK(Q,0,1)ELSE IF(MEM[Q].HH.RH=0)
AND(MEM[Q].HH.B0<=1)AND(MEM[Q+4].INT=0)THEN CLEANBOX:=Q ELSE CLEANBOX:=
HPACK(Q,0,1);END;{672}PROCEDURE FETCH(A:HALFWORD);
BEGIN CURC:=MEM[A].HH.B1;CURF:=EQTB[3160+MEM[A].HH.B0+CURSIZE].HH.RH;
IF CURF=0 THEN{673}BEGIN PRINTNL(692);PRINTSIZE(CURSIZE);PRINT(32);
PRINTINT(MEM[A].HH.B0);PRINT(693);PRINTASCII(CURC);PRINTCHAR(41);
BEGIN HELPPTR:=3;HELPLINE[2]:=694;HELPLINE[1]:=695;HELPLINE[0]:=696;END;
ERROR;CURI:=NULLCHARACTE;MEM[A].HH.RH:=0;
END ELSE BEGIN IF(CURC>=FONTBC[CURF])AND(CURC<=FONTEC[CURF])THEN CURI:=
FONTINFO[CHARBASE[CURF]+CURC].QQQQ ELSE CURI:=NULLCHARACTE;
IF NOT((CURI.B0>0))THEN BEGIN CHARWARNING(CURF,CURC);MEM[A].HH.RH:=0;
END;END;END;{676}{682}PROCEDURE MAKEOVER(Q:HALFWORD);
BEGIN MEM[Q+1].HH.LH:=OVERBAR(CLEANBOX(Q+1,2*(CURSTYLE DIV 2)+1),3*
FONTINFO[8+PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT,FONTINFO[8+PARAMBASE
[EQTB[3163+CURSIZE].HH.RH]].INT);MEM[Q+1].HH.RH:=2;END;
{683}PROCEDURE MAKEUNDER(Q:HALFWORD);VAR P,X,Y:HALFWORD;DELTA:SCALED;
BEGIN X:=CLEANBOX(Q+1,CURSTYLE);
P:=NEWKERN(3*FONTINFO[8+PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT);
MEM[X].HH.RH:=P;
MEM[P].HH.RH:=FRACTIONRULE(FONTINFO[8+PARAMBASE[EQTB[3163+CURSIZE].HH.RH
]].INT);Y:=VPACKAGE(X,0,1,1073741823);
DELTA:=MEM[Y+3].INT+MEM[Y+2].INT+FONTINFO[8+PARAMBASE[EQTB[3163+CURSIZE]
.HH.RH]].INT;MEM[Y+3].INT:=MEM[X+3].INT;
MEM[Y+2].INT:=DELTA-MEM[Y+3].INT;MEM[Q+1].HH.LH:=Y;MEM[Q+1].HH.RH:=2;
END;{684}PROCEDURE MAKEVCENTER(Q:HALFWORD);VAR V:HALFWORD;DELTA:SCALED;
BEGIN V:=MEM[Q+1].HH.LH;IF MEM[V].HH.B0<>1 THEN CONFUSION(354);
DELTA:=MEM[V+3].INT+MEM[V+2].INT;
MEM[V+3].INT:=FONTINFO[22+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT+HALF(
DELTA);MEM[V+2].INT:=DELTA-MEM[V+3].INT;END;
{685}PROCEDURE MAKERADICAL(Q:HALFWORD);VAR X,Y:HALFWORD;
DELTA,CLR:SCALED;BEGIN X:=CLEANBOX(Q+1,2*(CURSTYLE DIV 2)+1);
IF CURSTYLE<2 THEN CLR:=FONTINFO[8+PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].
INT+(ABS(FONTINFO[5+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT)DIV 4)ELSE
BEGIN CLR:=FONTINFO[8+PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT;
CLR:=CLR+(ABS(CLR)DIV 4);END;
Y:=VARDELIMITER(Q+4,CURSIZE,MEM[X+3].INT+MEM[X+2].INT+CLR+FONTINFO[8+
PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT);
IF MEM[Y+3].INT<=0 THEN MEM[Y+3].INT:=FONTINFO[8+PARAMBASE[EQTB[3163+
CURSIZE].HH.RH]].INT;
DELTA:=MEM[Y+2].INT-(MEM[X+3].INT+MEM[X+2].INT+CLR);
IF DELTA>0 THEN CLR:=CLR+HALF(DELTA);MEM[Y+4].INT:=-(MEM[X+3].INT+CLR);
MEM[Y].HH.RH:=OVERBAR(X,CLR,MEM[Y+3].INT);MEM[Q+1].HH.LH:=HPACK(Y,0,1);
MEM[Q+1].HH.RH:=2;END;{686}PROCEDURE MAKEMATHACCE(Q:HALFWORD);LABEL 30;
VAR P,X,Y:HALFWORD;C:QUARTERWORD;F:INTERNALFONT;I:FOURQUARTERS;
DELTA:SCALED;BEGIN FETCH(Q+4);IF(CURI.B0>0)THEN BEGIN I:=CURI;C:=CURC;
F:=CURF;X:=CLEANBOX(Q+1,2*(CURSTYLE DIV 2)+1);
{687}WHILE TRUE DO BEGIN IF(I.B2 MOD 4)<>2 THEN GOTO 30;Y:=I.B3;
I:=FONTINFO[CHARBASE[F]+Y].QQQQ;
IF FONTINFO[WIDTHBASE[F]+I.B0].INT>MEM[X+1].INT THEN GOTO 30;C:=Y;END;
30:;DELTA:=MEM[X+3].INT-FONTINFO[5+PARAMBASE[F]].INT;
IF DELTA<0 THEN DELTA:=0;Y:=CHARBOX(F,C);
MEM[Y+4].INT:=HALF(MEM[X+1].INT-MEM[Y+1].INT);MEM[Y+1].INT:=0;
P:=NEWKERN(DELTA-MEM[X+3].INT);MEM[P].HH.RH:=X;MEM[Y].HH.RH:=P;
Y:=VPACKAGE(Y,0,1,1073741823);MEM[Y+1].INT:=MEM[X+1].INT;
MEM[Q+1].HH.LH:=Y;MEM[Q+1].HH.RH:=2;END;END;
{688}PROCEDURE MAKEFRACTION(Q:HALFWORD);VAR P,V,X,Y,Z:HALFWORD;
DELTA,DELTA1,DELTA2,SHIFTUP,SHIFTDOWN,CLR:SCALED;
BEGIN{689}X:=CLEANBOX(Q+2,CURSTYLE+2-2*(CURSTYLE DIV 6));
Z:=CLEANBOX(Q+3,2*(CURSTYLE DIV 2)+3-2*(CURSTYLE DIV 6));
IF MEM[X+1].INT<MEM[Z+1].INT THEN X:=REBOX(X,MEM[Z+1].INT)ELSE Z:=REBOX(
Z,MEM[X+1].INT);
IF CURSTYLE<2 THEN BEGIN SHIFTUP:=FONTINFO[8+PARAMBASE[EQTB[3162+CURSIZE
].HH.RH]].INT;
SHIFTDOWN:=FONTINFO[11+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT;
END ELSE BEGIN SHIFTDOWN:=FONTINFO[12+PARAMBASE[EQTB[3162+CURSIZE].HH.RH
]].INT;
IF MEM[Q+1].INT<>0 THEN SHIFTUP:=FONTINFO[9+PARAMBASE[EQTB[3162+CURSIZE]
.HH.RH]].INT ELSE SHIFTUP:=FONTINFO[10+PARAMBASE[EQTB[3162+CURSIZE].HH.
RH]].INT;END;
IF MEM[Q+1].INT=0 THEN{690}BEGIN IF CURSTYLE<2 THEN CLR:=7*FONTINFO[8+
PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT ELSE CLR:=3*FONTINFO[8+
PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT;
DELTA:=HALF(CLR-((SHIFTUP-MEM[X+2].INT)-(MEM[Z+3].INT-SHIFTDOWN)));
IF DELTA>0 THEN BEGIN SHIFTUP:=SHIFTUP+DELTA;SHIFTDOWN:=SHIFTDOWN+DELTA;
END;END ELSE{691}BEGIN IF MEM[Q+1].INT=1073741824 THEN MEM[Q+1].INT:=
FONTINFO[8+PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT;
IF CURSTYLE<2 THEN CLR:=3*MEM[Q+1].INT ELSE CLR:=MEM[Q+1].INT;
DELTA:=HALF(MEM[Q+1].INT);
DELTA1:=CLR-((SHIFTUP-MEM[X+2].INT)-(FONTINFO[22+PARAMBASE[EQTB[3162+
CURSIZE].HH.RH]].INT+DELTA));
DELTA2:=CLR-((FONTINFO[22+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT-DELTA
)-(MEM[Z+3].INT-SHIFTDOWN));IF DELTA1>0 THEN SHIFTUP:=SHIFTUP+DELTA1;
IF DELTA2>0 THEN SHIFTDOWN:=SHIFTDOWN+DELTA2;END;{692}V:=NEWNULLBOX;
MEM[V].HH.B0:=1;MEM[V+3].INT:=SHIFTUP+MEM[X+3].INT;
MEM[V+2].INT:=MEM[Z+2].INT+SHIFTDOWN;MEM[V+1].INT:=MEM[X+1].INT;
IF MEM[Q+1].INT=0 THEN BEGIN P:=NEWKERN((SHIFTUP-MEM[X+2].INT)-(MEM[Z+3]
.INT-SHIFTDOWN));MEM[P].HH.RH:=Z;
END ELSE BEGIN Y:=FRACTIONRULE(MEM[Q+1].INT);
P:=NEWKERN((FONTINFO[22+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT-DELTA)-
(MEM[Z+3].INT-SHIFTDOWN));MEM[Y].HH.RH:=P;MEM[P].HH.RH:=Z;
P:=NEWKERN((SHIFTUP-MEM[X+2].INT)-(FONTINFO[22+PARAMBASE[EQTB[3162+
CURSIZE].HH.RH]].INT+DELTA));MEM[P].HH.RH:=Y;END;MEM[X].HH.RH:=P;
MEM[V+5].HH.RH:=X;
{693}IF CURSTYLE<2 THEN DELTA:=FONTINFO[20+PARAMBASE[EQTB[3162+CURSIZE].
HH.RH]].INT ELSE DELTA:=FONTINFO[21+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]]
.INT;X:=VARDELIMITER(Q+4,CURSIZE,DELTA);MEM[X].HH.RH:=V;
Z:=VARDELIMITER(Q+5,CURSIZE,DELTA);MEM[V].HH.RH:=Z;
MEM[Q+1].INT:=HPACK(X,0,1);END;{694}FUNCTION MAKEOP(Q:HALFWORD):SCALED;
VAR DELTA:SCALED;P,V,X,Y,Z:HALFWORD;SHIFTUP,SHIFTDOWN:SCALED;
BEGIN IF MEM[Q+1].HH.RH=1 THEN BEGIN FETCH(Q+1);
IF(CURSTYLE<2)AND((CURI.B2 MOD 4)=2)THEN BEGIN CURC:=CURI.B3;
MEM[Q+1].HH.B1:=CURC;CURI:=FONTINFO[CHARBASE[CURF]+CURC].QQQQ;END;
DELTA:=FONTINFO[ITALICBASE[CURF]+CURI.B2 DIV 4].INT;
X:=CLEANBOX(Q+1,CURSTYLE);MEM[X+1].INT:=MEM[X+1].INT-DELTA;
MEM[X+4].INT:=HALF(MEM[X+3].INT-MEM[X+2].INT)-FONTINFO[22+PARAMBASE[EQTB
[3162+CURSIZE].HH.RH]].INT;MEM[Q+1].HH.RH:=2;MEM[Q+1].HH.LH:=X;
END ELSE DELTA:=0;
IF CURSTYLE<2 THEN IF((DELTA=0)AND(MEM[Q].HH.B1=0))OR((DELTA<>0)AND(MEM[
Q].HH.B1=1))THEN MEM[Q].HH.B1:=1 ELSE MEM[Q].HH.B1:=0 ELSE MEM[Q].HH.B1
:=0;
IF MEM[Q].HH.B1=1 THEN{695}BEGIN X:=CLEANBOX(Q+2,2*(CURSTYLE DIV 4)+4+(
CURSTYLE MOD 2));Y:=CLEANBOX(Q+1,CURSTYLE);
Z:=CLEANBOX(Q+3,2*(CURSTYLE DIV 4)+5);V:=NEWNULLBOX;MEM[V].HH.B0:=1;
MEM[V+1].INT:=MEM[Y+1].INT;
IF MEM[X+1].INT>MEM[V+1].INT THEN MEM[V+1].INT:=MEM[X+1].INT;
IF MEM[Z+1].INT>MEM[V+1].INT THEN MEM[V+1].INT:=MEM[Z+1].INT;
X:=REBOX(X,MEM[V+1].INT);Y:=REBOX(Y,MEM[V+1].INT);
Z:=REBOX(Z,MEM[V+1].INT);MEM[X+4].INT:=HALF(DELTA);
MEM[Z+4].INT:=-MEM[X+4].INT;MEM[V+3].INT:=MEM[Y+3].INT;
MEM[V+2].INT:=MEM[Y+2].INT;
{696}IF MEM[Q+2].HH.RH=0 THEN BEGIN FREENODE(X,7);MEM[V+5].HH.RH:=Y;
END ELSE BEGIN SHIFTUP:=FONTINFO[11+PARAMBASE[EQTB[3163+CURSIZE].HH.RH]]
.INT-MEM[X+2].INT;
IF SHIFTUP<FONTINFO[9+PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT THEN
SHIFTUP:=FONTINFO[9+PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT;
P:=NEWKERN(SHIFTUP);MEM[P].HH.RH:=Y;MEM[X].HH.RH:=P;
P:=NEWKERN(FONTINFO[13+PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT);
MEM[P].HH.RH:=X;MEM[V+5].HH.RH:=P;
MEM[V+3].INT:=MEM[V+3].INT+FONTINFO[13+PARAMBASE[EQTB[3163+CURSIZE].HH.
RH]].INT+MEM[X+3].INT+MEM[X+2].INT+SHIFTUP;END;
IF MEM[Q+3].HH.RH=0 THEN FREENODE(Z,7)ELSE BEGIN SHIFTDOWN:=FONTINFO[12+
PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT-MEM[Z+3].INT;
IF SHIFTDOWN<FONTINFO[10+PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT THEN
SHIFTDOWN:=FONTINFO[10+PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT;
P:=NEWKERN(SHIFTDOWN);MEM[Y].HH.RH:=P;MEM[P].HH.RH:=Z;
P:=NEWKERN(FONTINFO[13+PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT);
MEM[Z].HH.RH:=P;
MEM[V+2].INT:=MEM[V+2].INT+FONTINFO[13+PARAMBASE[EQTB[3163+CURSIZE].HH.
RH]].INT+MEM[Z+3].INT+MEM[Z+2].INT+SHIFTDOWN;END;MEM[Q+1].INT:=V;
END ELSE IF(DELTA<>0)AND(MEM[Q+3].HH.RH=0)THEN MEM[X+1].INT:=MEM[X+1].
INT+DELTA;MAKEOP:=DELTA;END;{697}PROCEDURE MAKEORD(Q:HALFWORD);
LABEL 20,10;VAR A:INTEGER;P:HALFWORD;
BEGIN 20:IF(MEM[Q+3].HH.RH=0)AND(MEM[Q+2].HH.RH=0)AND(MEM[Q+1].HH.RH=1)
THEN BEGIN P:=MEM[Q].HH.RH;
IF P<>0 THEN IF(MEM[P].HH.B0>=15)AND(MEM[P].HH.B0<=21)THEN IF MEM[P+1].
HH.RH=1 THEN IF MEM[P+1].HH.B0=MEM[Q+1].HH.B0 THEN BEGIN MEM[Q+1].HH.RH
:=4;FETCH(Q+1);
IF(CURI.B2 MOD 4)=1 THEN BEGIN A:=LIGKERNBASE[CURF]+CURI.B3;
CURC:=MEM[P+1].HH.B1;REPEAT CURI:=FONTINFO[A].QQQQ;
{698}IF CURI.B1=CURC THEN IF CURI.B2>=128 THEN BEGIN P:=NEWKERN(FONTINFO
[KERNBASE[CURF]+CURI.B3].INT);MEM[P].HH.RH:=MEM[Q].HH.RH;
MEM[Q].HH.RH:=P;GOTO 10;END ELSE BEGIN MEM[Q].HH.RH:=MEM[P].HH.RH;
MEM[Q+1].HH.RH:=1;MEM[Q+1].HH.B1:=CURI.B3;MEM[Q+3]:=MEM[P+3];
MEM[Q+2]:=MEM[P+2];FREENODE(P,4);GOTO 20;END;A:=A+1;UNTIL CURI.B0>=128;
END;END;END;10:END;{701}PROCEDURE MAKESCRIPTS(Q:HALFWORD;DELTA:SCALED);
VAR P,X,Y,Z:HALFWORD;SHIFTUP,SHIFTDOWN,CLR:SCALED;T:SMALLNUMBER;
BEGIN P:=MEM[Q+1].INT;IF(P>25000)THEN BEGIN SHIFTUP:=0;SHIFTDOWN:=0;
END ELSE BEGIN Z:=HPACK(P,0,1);IF CURSTYLE<4 THEN T:=16 ELSE T:=32;
SHIFTUP:=MEM[Z+3].INT-FONTINFO[18+PARAMBASE[EQTB[3162+T].HH.RH]].INT;
SHIFTDOWN:=MEM[Z+2].INT+FONTINFO[19+PARAMBASE[EQTB[3162+T].HH.RH]].INT;
FREENODE(Z,7);END;
IF MEM[Q+2].HH.RH=0 THEN{702}BEGIN X:=CLEANBOX(Q+3,2*(CURSTYLE DIV 4)+5)
;MEM[X+1].INT:=MEM[X+1].INT+EQTB[4284].INT;
IF SHIFTDOWN<FONTINFO[16+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT THEN
SHIFTDOWN:=FONTINFO[16+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT;
CLR:=MEM[X+3].INT-(ABS(FONTINFO[5+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].
INT*4)DIV 5);IF SHIFTDOWN<CLR THEN SHIFTDOWN:=CLR;
MEM[X+4].INT:=SHIFTDOWN;
END ELSE BEGIN{703}BEGIN X:=CLEANBOX(Q+2,2*(CURSTYLE DIV 4)+4+(CURSTYLE
MOD 2));MEM[X+1].INT:=MEM[X+1].INT+EQTB[4284].INT;
IF ODD(CURSTYLE)THEN CLR:=FONTINFO[15+PARAMBASE[EQTB[3162+CURSIZE].HH.RH
]].INT ELSE IF CURSTYLE<2 THEN CLR:=FONTINFO[13+PARAMBASE[EQTB[3162+
CURSIZE].HH.RH]].INT ELSE CLR:=FONTINFO[14+PARAMBASE[EQTB[3162+CURSIZE].
HH.RH]].INT;IF SHIFTUP<CLR THEN SHIFTUP:=CLR;
CLR:=MEM[X+2].INT+(ABS(FONTINFO[5+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].
INT)DIV 4);IF SHIFTUP<CLR THEN SHIFTUP:=CLR;END;
IF MEM[Q+3].HH.RH=0 THEN MEM[X+4].INT:=-SHIFTUP ELSE{704}BEGIN Y:=
CLEANBOX(Q+3,2*(CURSTYLE DIV 4)+5);
MEM[Y+1].INT:=MEM[Y+1].INT+EQTB[4284].INT;
IF SHIFTDOWN<FONTINFO[17+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT THEN
SHIFTDOWN:=FONTINFO[17+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT;
CLR:=4*FONTINFO[8+PARAMBASE[EQTB[3163+CURSIZE].HH.RH]].INT-((SHIFTUP-MEM
[X+2].INT)-(MEM[Y+3].INT-SHIFTDOWN));
IF CLR>0 THEN BEGIN SHIFTDOWN:=SHIFTDOWN+CLR;
CLR:=(ABS(FONTINFO[5+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT*4)DIV 5)-(
SHIFTUP-MEM[X+2].INT);IF CLR>0 THEN BEGIN SHIFTUP:=SHIFTUP+CLR;
SHIFTDOWN:=SHIFTDOWN-CLR;END;END;MEM[X+4].INT:=DELTA;
P:=NEWKERN((SHIFTUP-MEM[X+2].INT)-(MEM[Y+3].INT-SHIFTDOWN));
MEM[X].HH.RH:=P;MEM[P].HH.RH:=Y;X:=VPACKAGE(X,0,1,1073741823);
MEM[X+4].INT:=SHIFTDOWN;END;END;
IF MEM[Q+1].INT=0 THEN MEM[Q+1].INT:=X ELSE BEGIN P:=MEM[Q+1].INT;
WHILE MEM[P].HH.RH<>0 DO P:=MEM[P].HH.RH;MEM[P].HH.RH:=X;END;END;
{707}FUNCTION MAKELEFTRIGH(Q:HALFWORD;STYLE:SMALLNUMBER;
MAXD,MAXH:SCALED):SMALLNUMBER;VAR DELTA,DELTA1,DELTA2:SCALED;
BEGIN IF STYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((STYLE-2)DIV 2);
DELTA2:=MAXD+FONTINFO[22+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT;
DELTA1:=MAXH+MAXD-DELTA2;IF DELTA2>DELTA1 THEN DELTA1:=DELTA2;
DELTA:=(ABS(EQTB[3866].INT)DIV 500)*DELTA1;
DELTA2:=DELTA1+DELTA1-EQTB[4282].INT;IF DELTA<DELTA2 THEN DELTA:=DELTA2;
MEM[Q+1].INT:=VARDELIMITER(Q+1,CURSIZE,DELTA);
MAKELEFTRIGH:=MEM[Q].HH.B0-(10);END;PROCEDURE MLISTTOHLIST;
LABEL 21,82,80,81,83,30;VAR MLIST:HALFWORD;PENALTIES:BOOLEAN;
STYLE:SMALLNUMBER;SAVESTYLE:SMALLNUMBER;Q:HALFWORD;R:HALFWORD;
RTYPE:SMALLNUMBER;T:SMALLNUMBER;P,V,X,Y,Z:HALFWORD;PEN:INTEGER;
S:SMALLNUMBER;MAXH,MAXD:SCALED;DELTA:SCALED;BEGIN MLIST:=CURMLIST;
PENALTIES:=MLISTPENALTI;STYLE:=CURSTYLE;Q:=MLIST;R:=0;RTYPE:=16;MAXH:=0;
MAXD:=0;
{654}BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)
DIV 2);
CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT,18);
END;WHILE Q<>0 DO{677}BEGIN{678}21:DELTA:=0;
CASE MEM[Q].HH.B0 OF 17:CASE RTYPE OF 17,16,18,19,21,29:BEGIN MEM[Q].HH.
B0:=15;GOTO 21;END;OTHERS:END;
18,20,21,30:BEGIN IF RTYPE=17 THEN MEM[R].HH.B0:=15;
IF MEM[Q].HH.B0=30 THEN GOTO 80;END;{681}29:GOTO 80;
24:BEGIN MAKEFRACTION(Q);GOTO 82;END;16:BEGIN DELTA:=MAKEOP(Q);
IF MEM[Q].HH.B1=1 THEN GOTO 82;END;15:MAKEORD(Q);19,22:;
23:MAKERADICAL(Q);26:MAKEOVER(Q);25:MAKEUNDER(Q);27:MAKEMATHACCE(Q);
28:MAKEVCENTER(Q);{679}14:BEGIN CURSTYLE:=MEM[Q].HH.B1;
{654}BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)
DIV 2);
CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT,18);
END;GOTO 81;END;8,12,7:GOTO 81;
2:BEGIN IF MEM[Q+3].INT>MAXH THEN MAXH:=MEM[Q+3].INT;
IF MEM[Q+2].INT>MAXD THEN MAXD:=MEM[Q+2].INT;GOTO 81;END;
10:BEGIN{680}IF MEM[Q].HH.B1=99 THEN BEGIN X:=MEM[Q+1].HH.LH;
Y:=MATHGLUE(X,CURMU);DELETEGLUERE(X);MEM[Q+1].HH.LH:=Y;MEM[Q].HH.B1:=0;
END ELSE IF(CURSIZE>0)AND(MEM[Q].HH.B1=98)THEN BEGIN P:=MEM[Q].HH.RH;
IF P<>0 THEN IF(MEM[P].HH.B0=10)OR(MEM[P].HH.B0=11)THEN BEGIN MEM[Q].HH.
RH:=MEM[P].HH.RH;MEM[P].HH.RH:=0;FLUSHNODELIS(P);END;END;GOTO 81;END;
11:BEGIN MATHKERN(Q,CURMU);GOTO 81;END;OTHERS:CONFUSION(697)END;
{699}CASE MEM[Q+1].HH.RH OF 1,4:{700}BEGIN FETCH(Q+1);
IF(CURI.B0>0)THEN BEGIN DELTA:=FONTINFO[ITALICBASE[CURF]+CURI.B2 DIV 4].
INT;P:=NEWCHARACTER(CURF,CURC);
IF(MEM[Q+1].HH.RH=4)AND(FONTINFO[2+PARAMBASE[CURF]].INT<>0)THEN DELTA:=0
;
IF(MEM[Q+3].HH.RH=0)AND(DELTA<>0)THEN BEGIN MEM[P].HH.RH:=NEWKERN(DELTA)
;DELTA:=0;END;END ELSE P:=0;END;0:P:=0;2:P:=MEM[Q+1].HH.LH;
3:BEGIN CURMLIST:=MEM[Q+1].HH.LH;SAVESTYLE:=CURSTYLE;
MLISTPENALTI:=FALSE;MLISTTOHLIST;CURSTYLE:=SAVESTYLE;
{654}BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)
DIV 2);
CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT,18);
END;P:=HPACK(MEM[25003].HH.RH,0,1);END;OTHERS:CONFUSION(698)END;
MEM[Q+1].INT:=P;IF(MEM[Q+3].HH.RH=0)AND(MEM[Q+2].HH.RH=0)THEN GOTO 82;
MAKESCRIPTS(Q,DELTA);82:Z:=HPACK(MEM[Q+1].INT,0,1);
IF MEM[Z+3].INT>MAXH THEN MAXH:=MEM[Z+3].INT;
IF MEM[Z+2].INT>MAXD THEN MAXD:=MEM[Z+2].INT;FREENODE(Z,7);80:R:=Q;
RTYPE:=MEM[R].HH.B0;81:Q:=MEM[Q].HH.RH;END;{705}P:=25003;
MEM[P].HH.RH:=0;Q:=MLIST;RTYPE:=0;CURSTYLE:=STYLE;
{654}BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)
DIV 2);
CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT,18);
END;WHILE Q<>0 DO BEGIN{706}T:=22;S:=4;PEN:=10000;
CASE MEM[Q].HH.B0 OF 15,16,19,20,21:T:=MEM[Q].HH.B0;17:BEGIN T:=17;
PEN:=EQTB[3857].INT;END;18:BEGIN T:=18;PEN:=EQTB[3858].INT;END;
22,28,26,25:;23:S:=5;27:S:=5;24:S:=6;
29,30:T:=MAKELEFTRIGH(Q,STYLE,MAXD,MAXH);
14:{708}BEGIN CURSTYLE:=MEM[Q].HH.B1;S:=2;
{654}BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)
DIV 2);
CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3162+CURSIZE].HH.RH]].INT,18);
END;GOTO 83;END;8,12,2,7,10,11:BEGIN MEM[P].HH.RH:=Q;P:=Q;
Q:=MEM[Q].HH.RH;MEM[P].HH.RH:=0;GOTO 30;END;OTHERS:CONFUSION(699)END;
{711}IF RTYPE>0 THEN BEGIN CASE STRPOOL[RTYPE*8+T+MAGICOFFSET]OF 48:X:=0
;49:IF CURSTYLE<4 THEN X:=14 ELSE X:=0;50:X:=14;
51:IF CURSTYLE<4 THEN X:=15 ELSE X:=0;
52:IF CURSTYLE<4 THEN X:=16 ELSE X:=0;OTHERS:CONFUSION(701)END;
IF X<>0 THEN BEGIN Y:=MATHGLUE(EQTB[2368+X].HH.RH,CURMU);Z:=NEWGLUE(Y);
MEM[Y].HH.RH:=0;MEM[P].HH.RH:=Z;P:=Z;MEM[Z].HH.B1:=X+1;END;END;
{712}IF MEM[Q+1].INT<>0 THEN BEGIN MEM[P].HH.RH:=MEM[Q+1].INT;
REPEAT P:=MEM[P].HH.RH;UNTIL MEM[P].HH.RH=0;END;
IF(PEN<10000)AND PENALTIES AND(MEM[Q].HH.RH<>0)THEN BEGIN RTYPE:=MEM[MEM
[Q].HH.RH].HH.B0;
IF(RTYPE<>12)AND(RTYPE<>18)THEN BEGIN Z:=NEWPENALTY(PEN);
MEM[P].HH.RH:=Z;P:=Z;END;END;RTYPE:=T;83:R:=Q;Q:=MEM[Q].HH.RH;
FREENODE(R,S);30:END;END;{717}PROCEDURE PUSHALIGNMEN;VAR P:HALFWORD;
BEGIN P:=GETNODE(3);MEM[P].HH.RH:=ALIGNPTR;MEM[P].HH.LH:=CURALIGN;
MEM[P+1].HH.LH:=MEM[25008].HH.RH;MEM[P+1].HH.RH:=CURSPAN;
MEM[P+2].INT:=ALIGNSTATE;ALIGNPTR:=P;END;PROCEDURE POPALIGNMENT;
VAR P:HALFWORD;BEGIN P:=ALIGNPTR;ALIGNSTATE:=MEM[P+2].INT;
CURSPAN:=MEM[P+1].HH.RH;MEM[25008].HH.RH:=MEM[P+1].HH.LH;
CURALIGN:=MEM[P].HH.LH;ALIGNPTR:=MEM[P].HH.RH;FREENODE(P,3);END;
{719}{726}PROCEDURE GETPREAMBLET;LABEL 20;BEGIN 20:GETTOKEN;
WHILE(CURCHR=128)AND(CURCMD=4)DO GETXTOKEN;
IF(CURCMD=72)AND(CURCHR=10)THEN BEGIN SCANOPTIONAL;SCANGLUE(2);
EQDEFINE(2378,105,CURVAL);GOTO 20;END;END;PROCEDURE ALIGNPEEK;FORWARD;
PROCEDURE OFFSAVE;FORWARD;PROCEDURE INITALIGN;LABEL 30,31,32,22;
VAR SAVECSPTR:HALFWORD;P:HALFWORD;BEGIN SAVECSPTR:=CSPTR;PUSHALIGNMEN;
ALIGNSTATE:=-1000000;
{721}IF(CURLIST.MODEFIELD=187)AND((CURLIST.TAILFIELD<>CURLIST.HEADFIELD)
OR(CURLIST.AUXFIELD<>0))THEN BEGIN PRINTNL(702);BEGIN HELPPTR:=3;
HELPLINE[2]:=703;HELPLINE[1]:=704;HELPLINE[0]:=705;END;ERROR;FLUSHMATH;
END;PUSHNEST;
{720}IF CURLIST.MODEFIELD=187 THEN BEGIN CURLIST.MODEFIELD:=-1;
CURLIST.AUXFIELD:=NEST[NESTPTR-2].AUXFIELD;
END ELSE IF CURLIST.MODEFIELD>0 THEN CURLIST.MODEFIELD:=-CURLIST.
MODEFIELD;SCANSPEC;NEWSAVELEVEL(5);{722}MEM[25008].HH.RH:=0;
CURALIGN:=25008;SCANNERSTATU:=4;WARNINGINDEX:=SAVECSPTR;
WHILE TRUE DO BEGIN{723}MEM[CURALIGN].HH.RH:=NEWPARAMGLUE(10);
CURALIGN:=MEM[CURALIGN].HH.RH;IF CURCMD=5 THEN GOTO 30;
{724}{727}P:=25004;MEM[P].HH.RH:=0;WHILE TRUE DO BEGIN GETPREAMBLET;
IF CURCMD=6 THEN GOTO 31;
IF(CURCMD<=5)AND(CURCMD>=4)AND(ALIGNSTATE=-999999)THEN BEGIN PRINTNL(707
);BEGIN HELPPTR:=3;HELPLINE[2]:=708;HELPLINE[1]:=709;HELPLINE[0]:=710;
END;BACKERROR;GOTO 31;END;
IF(CURCMD<>10)OR(P<>25004)THEN BEGIN MEM[P].HH.RH:=GETAVAIL;
P:=MEM[P].HH.RH;MEM[P].HH.LH:=CURTOK;END;END;31:;
MEM[CURALIGN].HH.RH:=NEWNULLBOX;CURALIGN:=MEM[CURALIGN].HH.RH;
MEM[CURALIGN].HH.LH:=25009;MEM[CURALIGN+1].INT:=-1073741824;
MEM[CURALIGN+3].INT:=MEM[25004].HH.RH;{728}P:=25004;MEM[P].HH.RH:=0;
WHILE TRUE DO BEGIN 22:GETPREAMBLET;
IF(CURCMD<=5)AND(CURCMD>=4)AND(ALIGNSTATE=-999999)THEN GOTO 32;
IF CURCMD=6 THEN BEGIN PRINTNL(711);BEGIN HELPPTR:=3;HELPLINE[2]:=708;
HELPLINE[1]:=709;HELPLINE[0]:=712;END;ERROR;GOTO 22;END;
MEM[P].HH.RH:=GETAVAIL;P:=MEM[P].HH.RH;MEM[P].HH.LH:=CURTOK;END;
32:MEM[P].HH.RH:=GETAVAIL;P:=MEM[P].HH.RH;MEM[P].HH.LH:=6459;
MEM[CURALIGN+2].INT:=MEM[25004].HH.RH;END;30:SCANNERSTATU:=0;
NEWSAVELEVEL(5);ALIGNPEEK;END;{730}{731}PROCEDURE INITSPAN(P:HALFWORD);
BEGIN PUSHNEST;
IF CURLIST.MODEFIELD=-1 THEN CURLIST.AUXFIELD:=-65536000 ELSE CURLIST.
AUXFIELD:=1000;CURSPAN:=P;END;PROCEDURE INITROW;BEGIN PUSHNEST;
CURLIST.MODEFIELD:=(-95)-CURLIST.MODEFIELD;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(MEM[MEM[25008].HH.RH+1].HH.
LH);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B1:=11;CURALIGN:=MEM[MEM[25008].HH.RH].HH.RH;
INITSPAN(CURALIGN);END;{732}PROCEDURE INITCOL;
BEGIN MEM[CURALIGN+5].HH.LH:=CURCMD;
IF CURCMD=61 THEN ALIGNSTATE:=0 ELSE BEGIN BACKINPUT;
BEGINTOKENLI(MEM[CURALIGN+3].INT,1);END;END;
{735}FUNCTION FINCOL:BOOLEAN;LABEL 10;VAR P:HALFWORD;Q:HALFWORD;
S:HALFWORD;U:HALFWORD;W:SCALED;O:GLUEORD;N:HALFWORD;
BEGIN IF(CURALIGN=0)OR(MEM[CURALIGN].HH.RH=0)THEN CONFUSION(714);
P:=MEM[MEM[CURALIGN].HH.RH].HH.RH;
{736}IF(P=0)AND(MEM[CURALIGN+5].HH.LH<>129)THEN BEGIN PRINTNL(715);
BEGIN HELPPTR:=3;HELPLINE[2]:=716;HELPLINE[1]:=717;HELPLINE[0]:=718;END;
MEM[CURALIGN+5].HH.LH:=129;ERROR;END;
IF MEM[CURALIGN+5].HH.LH<>128 THEN BEGIN UNSAVE;NEWSAVELEVEL(5);
{739}BEGIN IF CURLIST.MODEFIELD=-94 THEN BEGIN U:=HPACK(MEM[CURLIST.
HEADFIELD].HH.RH,0,1);W:=MEM[U+1].INT;
END ELSE BEGIN U:=VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,0,1,0);
W:=MEM[U+3].INT;END;N:=0;IF CURSPAN<>CURALIGN THEN{741}BEGIN Q:=CURSPAN;
REPEAT N:=N+1;Q:=MEM[MEM[Q].HH.RH].HH.RH;UNTIL Q=CURALIGN;
IF N>511 THEN CONFUSION(719);Q:=CURSPAN;
WHILE MEM[MEM[Q].HH.LH].HH.RH<N DO Q:=MEM[Q].HH.LH;
IF MEM[MEM[Q].HH.LH].HH.RH>N THEN BEGIN S:=GETNODE(2);
MEM[S].HH.LH:=MEM[Q].HH.LH;MEM[S].HH.RH:=N;MEM[Q].HH.LH:=S;
MEM[S+1].INT:=W;
END ELSE IF MEM[MEM[Q].HH.LH+1].INT<W THEN MEM[MEM[Q].HH.LH+1].INT:=W;
END ELSE IF W>MEM[CURALIGN+1].INT THEN MEM[CURALIGN+1].INT:=W;
MEM[U].HH.B0:=13;MEM[U].HH.B1:=N;
{613}IF TOTALSTRETCH[3]<>0 THEN O:=3 ELSE IF TOTALSTRETCH[2]<>0 THEN O:=
2 ELSE IF TOTALSTRETCH[1]<>0 THEN O:=1 ELSE O:=0;MEM[U+5].HH.B1:=O;
MEM[U+6].INT:=TOTALSTRETCH[O];
{619}IF TOTALSHRINK[3]<>0 THEN O:=3 ELSE IF TOTALSHRINK[2]<>0 THEN O:=2
ELSE IF TOTALSHRINK[1]<>0 THEN O:=1 ELSE O:=0;MEM[U+5].HH.B0:=O;
MEM[U+4].INT:=TOTALSHRINK[O];POPNEST;MEM[CURLIST.TAILFIELD].HH.RH:=U;
CURLIST.TAILFIELD:=U;END;
{737}BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(MEM[MEM[CURALIGN].HH.RH
+1].HH.LH);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B1:=11;
IF MEM[CURALIGN+5].HH.LH=129 THEN{738}BEGIN CURALIGN:=P;
WHILE CURALIGN<>0 DO BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=
NEWNULLBOX;CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=13;
IF MEM[CURALIGN+1].INT<0 THEN MEM[CURALIGN+1].INT:=0;
{737}BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(MEM[MEM[CURALIGN].HH.RH
+1].HH.LH);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B1:=11;
CURALIGN:=MEM[MEM[CURALIGN].HH.RH].HH.RH;END;FINCOL:=TRUE;GOTO 10;END;
INITSPAN(P);END;ALIGNSTATE:=1000000;{376}REPEAT GETXTOKEN;
UNTIL CURCMD<>10;CURALIGN:=P;INITCOL;FINCOL:=FALSE;10:END;
{742}PROCEDURE FINROW;VAR P:HALFWORD;
BEGIN IF CURLIST.MODEFIELD=-94 THEN BEGIN P:=HPACK(MEM[CURLIST.HEADFIELD
].HH.RH,0,1);POPNEST;APPENDTOVLIS(P);
END ELSE BEGIN P:=VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,0,1,1073741823);
POPNEST;MEM[CURLIST.TAILFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;
CURLIST.AUXFIELD:=1000;END;MEM[P].HH.B0:=13;MEM[P+6].INT:=0;ALIGNPEEK;
END;{743}PROCEDURE DOASSIGNMENT;FORWARD;PROCEDURE RESUMEAFTERD;FORWARD;
PROCEDURE BUILDPAGE;FORWARD;PROCEDURE FINALIGN;VAR P,Q,R,S,U:HALFWORD;
T:SCALED;O:SCALED;N:HALFWORD;RULESAVE:SCALED;
BEGIN IF CURGROUP<>5 THEN CONFUSION(720);UNSAVE;
IF CURGROUP<>5 THEN CONFUSION(721);UNSAVE;
IF NEST[NESTPTR-1].MODEFIELD=187 THEN O:=EQTB[4287].INT ELSE O:=0;
{744}Q:=MEM[MEM[25008].HH.RH].HH.RH;REPEAT FLUSHLIST(MEM[Q+3].INT);
FLUSHLIST(MEM[Q+2].INT);P:=MEM[MEM[Q].HH.RH].HH.RH;
IF MEM[Q+1].INT=-1073741824 THEN MEM[Q+1].INT:=0;
IF(P<>0)AND(MEM[Q].HH.LH<>25009)THEN{745}BEGIN T:=MEM[Q+1].INT+MEM[MEM[
MEM[Q].HH.RH+1].HH.LH+1].INT;R:=MEM[Q].HH.LH;S:=25009;MEM[S].HH.LH:=P;
N:=1;REPEAT MEM[R+1].INT:=MEM[R+1].INT-T;U:=MEM[R].HH.LH;
WHILE MEM[R].HH.RH>N DO BEGIN S:=MEM[S].HH.LH;
N:=MEM[MEM[S].HH.LH].HH.RH+1;END;
IF MEM[R].HH.RH<N THEN BEGIN MEM[R].HH.LH:=MEM[S].HH.LH;MEM[S].HH.LH:=R;
MEM[R].HH.RH:=MEM[R].HH.RH-1;S:=R;
END ELSE BEGIN IF MEM[R+1].INT>MEM[MEM[S].HH.LH+1].INT THEN MEM[MEM[S].
HH.LH+1].INT:=MEM[R+1].INT;FREENODE(R,2);END;R:=U;UNTIL R=25009;END;
MEM[Q].HH.B0:=13;MEM[Q].HH.B1:=0;MEM[Q+3].INT:=MEM[Q+1].INT;
MEM[Q+2].INT:=0;MEM[Q+5].HH.B1:=0;MEM[Q+5].HH.B0:=0;MEM[Q+6].INT:=0;
MEM[Q+4].INT:=0;Q:=P;UNTIL Q=0;{746}RULESAVE:=EQTB[4288].INT;
EQTB[4288].INT:=0;SAVEPTR:=SAVEPTR-2;
IF CURLIST.MODEFIELD=-1 THEN P:=HPACK(MEM[25008].HH.RH,SAVESTACK[SAVEPTR
+1].INT,SAVESTACK[SAVEPTR+0].INT)ELSE P:=VPACKAGE(MEM[25008].HH.RH,
SAVESTACK[SAVEPTR+1].INT,SAVESTACK[SAVEPTR+0].INT,1073741823);
EQTB[4288].INT:=RULESAVE;Q:=P+5;REPEAT Q:=MEM[Q].HH.RH;
R:=MEM[Q+1].HH.LH;MEM[Q].HH.B0:=11;MEM[Q].HH.B1:=0;
IF MEM[P+5].HH.B0=0 THEN MEM[Q+1].INT:=MEM[R+1].INT ELSE IF MEM[P+5].HH.
B0=1 THEN IF MEM[R].HH.B0<>MEM[P+5].HH.B1 THEN MEM[Q+1].INT:=MEM[R+1].
INT ELSE MEM[Q+1].INT:=MEM[R+1].INT+ROUND(MEM[P+6].GR*MEM[R+2].INT)ELSE
IF MEM[R].HH.B1<>MEM[P+5].HH.B1 THEN MEM[Q+1].INT:=MEM[R+1].INT ELSE MEM
[Q+1].INT:=MEM[R+1].INT-ROUND(MEM[P+6].GR*MEM[R+3].INT);DELETEGLUERE(R);
Q:=MEM[Q].HH.RH;UNTIL Q=0;{747}Q:=MEM[CURLIST.HEADFIELD].HH.RH;
WHILE Q<>0 DO BEGIN IF MEM[Q].HH.B0=13 THEN{748}BEGIN IF CURLIST.
MODEFIELD=-1 THEN BEGIN MEM[Q].HH.B0:=0;MEM[Q+1].INT:=MEM[P+1].INT;
END ELSE BEGIN MEM[Q].HH.B0:=1;MEM[Q+3].INT:=MEM[P+3].INT;END;
MEM[Q+5].HH.B1:=MEM[P+5].HH.B1;MEM[Q+5].HH.B0:=MEM[P+5].HH.B0;
MEM[Q+6].GR:=MEM[P+6].GR;MEM[Q+4].INT:=O;R:=MEM[MEM[Q+5].HH.RH].HH.RH;
S:=MEM[MEM[P+5].HH.RH].HH.RH;REPEAT{749}N:=MEM[R].HH.B1;T:=MEM[S+1].INT;
WHILE N>0 DO BEGIN N:=N-1;S:=MEM[S].HH.RH;T:=T+MEM[S+1].INT;
S:=MEM[S].HH.RH;T:=T+MEM[S+1].INT;END;
IF CURLIST.MODEFIELD=-1 THEN{750}BEGIN MEM[R+3].INT:=MEM[Q+3].INT;
MEM[R+2].INT:=MEM[Q+2].INT;
IF T=MEM[R+1].INT THEN BEGIN MEM[R+5].HH.B0:=0;MEM[R+5].HH.B1:=0;
MEM[R+6].GR:=0.0;
END ELSE IF T>MEM[R+1].INT THEN BEGIN MEM[R+5].HH.B0:=1;
IF MEM[R+6].INT=0 THEN MEM[R+6].GR:=0.0 ELSE MEM[R+6].GR:=(T-MEM[R+1].
INT)/MEM[R+6].INT;END ELSE BEGIN MEM[R+5].HH.B1:=MEM[R+5].HH.B0;
MEM[R+5].HH.B0:=2;
IF MEM[R+4].INT=0 THEN MEM[R+6].GR:=0.0 ELSE MEM[R+6].GR:=(MEM[R+1].INT-
T)/MEM[R+4].INT;END;MEM[R+1].INT:=T;MEM[R].HH.B0:=0;
END ELSE{751}BEGIN MEM[R+1].INT:=MEM[Q+1].INT;
IF T=MEM[R+3].INT THEN BEGIN MEM[R+5].HH.B0:=0;MEM[R+5].HH.B1:=0;
MEM[R+6].GR:=0.0;
END ELSE IF T>MEM[R+3].INT THEN BEGIN MEM[R+5].HH.B0:=1;
IF MEM[R+6].INT=0 THEN MEM[R+6].GR:=0.0 ELSE MEM[R+6].GR:=(T-MEM[R+3].
INT)/MEM[R+6].INT;END ELSE BEGIN MEM[R+5].HH.B1:=MEM[R+5].HH.B0;
MEM[R+5].HH.B0:=2;
IF MEM[R+4].INT=0 THEN MEM[R+6].GR:=0.0 ELSE MEM[R+6].GR:=(MEM[R+3].INT-
T)/MEM[R+4].INT;END;MEM[R+3].INT:=T;MEM[R].HH.B0:=1;END;MEM[R+4].INT:=0;
IF MEM[R].HH.B1>0 THEN BEGIN T:=NEWKERN(0);MEM[T].HH.RH:=MEM[R].HH.RH;
MEM[R].HH.RH:=T;R:=T;END;R:=MEM[MEM[R].HH.RH].HH.RH;
S:=MEM[MEM[S].HH.RH].HH.RH;UNTIL R=0;END;Q:=MEM[Q].HH.RH;END;
FLUSHNODELIS(P);POPALIGNMENT;{752}T:=CURLIST.AUXFIELD;
P:=MEM[CURLIST.HEADFIELD].HH.RH;Q:=CURLIST.TAILFIELD;POPNEST;
IF CURLIST.MODEFIELD=187 THEN{1140}BEGIN DOASSIGNMENT;
IF CURCMD<>3 THEN{1141}BEGIN PRINTNL(952);BEGIN HELPPTR:=2;
HELPLINE[1]:=703;HELPLINE[0]:=704;END;BACKERROR;
END ELSE{1131}BEGIN GETXTOKEN;IF CURCMD<>3 THEN BEGIN PRINTNL(948);
BEGIN HELPPTR:=2;HELPLINE[1]:=949;HELPLINE[0]:=950;END;BACKERROR;END;
END;POPNEST;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[3859].INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(3);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.RH:=P;IF P<>0 THEN CURLIST.TAILFIELD:=Q;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[3860].INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(3);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;CURLIST.AUXFIELD:=T;
RESUMEAFTERD;END ELSE BEGIN CURLIST.AUXFIELD:=T;
MEM[CURLIST.TAILFIELD].HH.RH:=P;IF P<>0 THEN CURLIST.TAILFIELD:=Q;
IF CURLIST.MODEFIELD=1 THEN BUILDPAGE;END;END;{729}PROCEDURE ALIGNPEEK;
BEGIN ALIGNSTATE:=1000000;{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
IF CURCMD=35 THEN BEGIN SCANLEFTBRAC;NEWSAVELEVEL(6);
END ELSE IF CURCMD=2 THEN FINALIGN ELSE BEGIN INITROW;INITCOL;END;END;
{755}{766}FUNCTION FINITESHRINK(P:HALFWORD):HALFWORD;VAR Q:HALFWORD;
BEGIN IF NOSHRINKERRO THEN BEGIN NOSHRINKERRO:=FALSE;PRINTNL(722);
BEGIN HELPPTR:=5;HELPLINE[4]:=723;HELPLINE[3]:=724;HELPLINE[2]:=725;
HELPLINE[1]:=726;HELPLINE[0]:=727;END;ERROR;END;Q:=NEWSPEC(P);
MEM[Q].HH.B1:=0;DELETEGLUERE(P);FINITESHRINK:=Q;END;
{769}PROCEDURE TRYBREAK(PI:INTEGER;BREAKTYPE:SMALLNUMBER);
LABEL 10,30,22,60;VAR R:HALFWORD;PREVR:HALFWORD;OLDL:HALFWORD;
NOBREAKYET:BOOLEAN;{770}PREVPREVR:HALFWORD;S:HALFWORD;Q:HALFWORD;
V:HALFWORD;T:QUARTERWORD;F:INTERNALFONT;L:HALFWORD;NODERSTAYSAC:BOOLEAN;
LINEWIDTH:SCALED;FITCLASS:0..3;B:HALFWORD;D:INTEGER;
ARTIFICIALBA:BOOLEAN;SAVELINK:HALFWORD;
BEGIN{771}IF ABS(PI)>=10000 THEN IF PI>0 THEN GOTO 10 ELSE PI:=-10000;
NOBREAKYET:=TRUE;PREVR:=25006;OLDL:=0;CURACTIVEWID[1]:=ACTIVEWIDTH[1];
CURACTIVEWID[2]:=ACTIVEWIDTH[2];CURACTIVEWID[3]:=ACTIVEWIDTH[3];
CURACTIVEWID[4]:=ACTIVEWIDTH[4];CURACTIVEWID[5]:=ACTIVEWIDTH[5];
CURACTIVEWID[6]:=ACTIVEWIDTH[6];
WHILE TRUE DO BEGIN 22:R:=MEM[PREVR].HH.RH;
{772}IF MEM[R].HH.B0=2 THEN BEGIN CURACTIVEWID[1]:=CURACTIVEWID[1]+MEM[R
+1].INT;CURACTIVEWID[2]:=CURACTIVEWID[2]+MEM[R+2].INT;
CURACTIVEWID[3]:=CURACTIVEWID[3]+MEM[R+3].INT;
CURACTIVEWID[4]:=CURACTIVEWID[4]+MEM[R+4].INT;
CURACTIVEWID[5]:=CURACTIVEWID[5]+MEM[R+5].INT;
CURACTIVEWID[6]:=CURACTIVEWID[6]+MEM[R+6].INT;PREVPREVR:=PREVR;PREVR:=R;
GOTO 22;END;{775}BEGIN L:=MEM[R+1].HH.LH;
IF L>OLDL THEN BEGIN IF(MINIMUMDEMER<1073741823)AND((OLDL<>EASYLINE)OR(R
=25006))THEN{776}BEGIN IF NOBREAKYET THEN{777}BEGIN NOBREAKYET:=FALSE;
BREAKWIDTH[1]:=BACKGROUND[1];BREAKWIDTH[2]:=BACKGROUND[2];
BREAKWIDTH[3]:=BACKGROUND[3];BREAKWIDTH[4]:=BACKGROUND[4];
BREAKWIDTH[5]:=BACKGROUND[5];BREAKWIDTH[6]:=BACKGROUND[6];
IF(BREAKTYPE=0)OR(CURP=0)THEN BEGIN S:=CURP;
WHILE S<>0 DO BEGIN IF(S>25000)THEN GOTO 30;
CASE MEM[S].HH.B0 OF 10:{778}BEGIN V:=MEM[S+1].HH.LH;
BREAKWIDTH[1]:=BREAKWIDTH[1]-MEM[V+1].INT;
BREAKWIDTH[2+MEM[V].HH.B0]:=BREAKWIDTH[2+MEM[V].HH.B0]-MEM[V+2].INT;
BREAKWIDTH[6]:=BREAKWIDTH[6]-MEM[V+3].INT;END;12:;
9,11:BREAKWIDTH[1]:=BREAKWIDTH[1]-MEM[S+1].INT;OTHERS:GOTO 30 END;
S:=MEM[S].HH.RH;END;END ELSE{780}BEGIN T:=MEM[CURP].HH.B1;S:=CURP;
WHILE T>0 DO BEGIN T:=T-1;S:=MEM[S].HH.RH;
{781}IF(S>25000)THEN BEGIN F:=MEM[S].HH.B0;
BREAKWIDTH[1]:=BREAKWIDTH[1]-FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+
MEM[S].HH.B1].QQQQ.B0].INT;
END ELSE CASE MEM[S].HH.B0 OF 6:BEGIN F:=MEM[S+1].HH.B0;
BREAKWIDTH[1]:=BREAKWIDTH[1]-FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+
MEM[S+1].HH.B1].QQQQ.B0].INT;END;
11:BREAKWIDTH[1]:=BREAKWIDTH[1]-MEM[S+1].INT;OTHERS:CONFUSION(728)END;
END;S:=MEM[CURP+1].HH.RH;
WHILE S<>0 DO BEGIN{782}IF(S>25000)THEN BEGIN F:=MEM[S].HH.B0;
BREAKWIDTH[1]:=BREAKWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+
MEM[S].HH.B1].QQQQ.B0].INT;
END ELSE CASE MEM[S].HH.B0 OF 6:BEGIN F:=MEM[S+1].HH.B0;
BREAKWIDTH[1]:=BREAKWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+
MEM[S+1].HH.B1].QQQQ.B0].INT;END;
11:BREAKWIDTH[1]:=BREAKWIDTH[1]+MEM[S+1].INT;OTHERS:CONFUSION(729)END;
S:=MEM[S].HH.RH;END;BREAKWIDTH[1]:=BREAKWIDTH[1]+DISCWIDTH;END;30:END;
{783}IF MEM[PREVR].HH.B0=2 THEN BEGIN MEM[PREVR+1].INT:=MEM[PREVR+1].INT
-CURACTIVEWID[1]+BREAKWIDTH[1];
MEM[PREVR+2].INT:=MEM[PREVR+2].INT-CURACTIVEWID[2]+BREAKWIDTH[2];
MEM[PREVR+3].INT:=MEM[PREVR+3].INT-CURACTIVEWID[3]+BREAKWIDTH[3];
MEM[PREVR+4].INT:=MEM[PREVR+4].INT-CURACTIVEWID[4]+BREAKWIDTH[4];
MEM[PREVR+5].INT:=MEM[PREVR+5].INT-CURACTIVEWID[5]+BREAKWIDTH[5];
MEM[PREVR+6].INT:=MEM[PREVR+6].INT-CURACTIVEWID[6]+BREAKWIDTH[6];
END ELSE IF PREVR=25006 THEN BEGIN ACTIVEWIDTH[1]:=BREAKWIDTH[1];
ACTIVEWIDTH[2]:=BREAKWIDTH[2];ACTIVEWIDTH[3]:=BREAKWIDTH[3];
ACTIVEWIDTH[4]:=BREAKWIDTH[4];ACTIVEWIDTH[5]:=BREAKWIDTH[5];
ACTIVEWIDTH[6]:=BREAKWIDTH[6];END ELSE BEGIN Q:=GETNODE(7);
MEM[Q].HH.RH:=R;MEM[Q].HH.B0:=2;MEM[Q].HH.B1:=0;
MEM[Q+1].INT:=BREAKWIDTH[1]-CURACTIVEWID[1];
MEM[Q+2].INT:=BREAKWIDTH[2]-CURACTIVEWID[2];
MEM[Q+3].INT:=BREAKWIDTH[3]-CURACTIVEWID[3];
MEM[Q+4].INT:=BREAKWIDTH[4]-CURACTIVEWID[4];
MEM[Q+5].INT:=BREAKWIDTH[5]-CURACTIVEWID[5];
MEM[Q+6].INT:=BREAKWIDTH[6]-CURACTIVEWID[6];MEM[PREVR].HH.RH:=Q;
PREVPREVR:=PREVR;PREVR:=Q;END;
MINIMUMDEMER:=MINIMUMDEMER+ABS(EQTB[3864].INT);
FOR FITCLASS:=0 TO 3 DO BEGIN IF MINIMALDEMER[FITCLASS]<=MINIMUMDEMER
THEN{785}BEGIN Q:=GETNODE(2);MEM[Q].HH.RH:=PASSIVE;PASSIVE:=Q;
MEM[Q+1].HH.RH:=CURP;PASSNUMBER:=PASSNUMBER+1;MEM[Q].HH.LH:=PASSNUMBER;
MEM[Q+1].HH.LH:=BESTPLACE[FITCLASS];Q:=GETNODE(3);
MEM[Q+1].HH.RH:=PASSIVE;MEM[Q+1].HH.LH:=BESTPLLINE[FITCLASS]+1;
MEM[Q].HH.B1:=FITCLASS;MEM[Q].HH.B0:=BREAKTYPE;
MEM[Q+2].INT:=MINIMALDEMER[FITCLASS];MEM[Q].HH.RH:=R;
MEM[PREVR].HH.RH:=Q;PREVR:=Q;
IF EQTB[3879].INT>2 THEN{786}BEGIN PRINTNL(730);
PRINTINT(MEM[PASSIVE].HH.LH);PRINT(731);PRINTINT(MEM[Q+1].HH.LH-1);
PRINTCHAR(46);PRINTINT(FITCLASS);IF BREAKTYPE=1 THEN PRINTCHAR(45);
PRINT(732);PRINTINT(MEM[Q+2].INT);PRINT(733);
PRINTINT(MEM[MEM[PASSIVE+1].HH.LH].HH.LH);END;END;
MINIMALDEMER[FITCLASS]:=1073741823;END;MINIMUMDEMER:=1073741823;
{784}IF R<>25006 THEN BEGIN Q:=GETNODE(7);MEM[Q].HH.RH:=R;
MEM[Q].HH.B0:=2;MEM[Q].HH.B1:=0;
MEM[Q+1].INT:=CURACTIVEWID[1]-BREAKWIDTH[1];
MEM[Q+2].INT:=CURACTIVEWID[2]-BREAKWIDTH[2];
MEM[Q+3].INT:=CURACTIVEWID[3]-BREAKWIDTH[3];
MEM[Q+4].INT:=CURACTIVEWID[4]-BREAKWIDTH[4];
MEM[Q+5].INT:=CURACTIVEWID[5]-BREAKWIDTH[5];
MEM[Q+6].INT:=CURACTIVEWID[6]-BREAKWIDTH[6];MEM[PREVR].HH.RH:=Q;
PREVPREVR:=PREVR;PREVR:=Q;END;END;IF R=25006 THEN GOTO 10;
{790}IF L>EASYLINE THEN BEGIN LINEWIDTH:=SECONDWIDTH;OLDL:=262142;
END ELSE BEGIN OLDL:=L;
IF L>LASTSPECIALL THEN LINEWIDTH:=SECONDWIDTH ELSE IF EQTB[2897].HH.RH=0
THEN LINEWIDTH:=FIRSTWIDTH ELSE LINEWIDTH:=MEM[EQTB[2897].HH.RH+2*L].INT
;END;END;END;{791}BEGIN ARTIFICIALBA:=FALSE;
IF CURACTIVEWID[1]<LINEWIDTH THEN{792}IF(CURACTIVEWID[3]<>0)OR(
CURACTIVEWID[4]<>0)OR(CURACTIVEWID[5]<>0)THEN BEGIN B:=0;FITCLASS:=1;
END ELSE BEGIN B:=BADNESS(LINEWIDTH-CURACTIVEWID[1],CURACTIVEWID[2]);
IF B>12 THEN IF B>99 THEN FITCLASS:=3 ELSE FITCLASS:=2 ELSE FITCLASS:=1;
END ELSE{793}BEGIN IF CURACTIVEWID[1]-LINEWIDTH>CURACTIVEWID[6]THEN B:=
10001 ELSE B:=BADNESS(CURACTIVEWID[1]-LINEWIDTH,CURACTIVEWID[6]);
IF B>12 THEN FITCLASS:=0 ELSE FITCLASS:=1;END;
IF(B>10000)OR(PI=-10000)THEN{794}BEGIN IF SECONDPASS AND(MINIMUMDEMER=
1073741823)AND(MEM[R].HH.RH=25006)AND(PREVR=25006)THEN BEGIN B:=0;
ARTIFICIALBA:=TRUE;END ELSE IF B>THRESHOLD THEN GOTO 60;
NODERSTAYSAC:=FALSE;END ELSE BEGIN PREVR:=R;IF B>THRESHOLD THEN GOTO 22;
NODERSTAYSAC:=TRUE;END;{795}{799}D:=EQTB[3851].INT+B;D:=D*D;
IF PI<>0 THEN IF PI>0 THEN D:=D+PI*PI ELSE IF PI>-10000 THEN D:=D-PI*PI;
IF(BREAKTYPE=1)AND(MEM[R].HH.B0=1)THEN IF CURP<>0 THEN D:=D+EQTB[3862].
INT ELSE D:=D+EQTB[3863].INT;
IF ABS(FITCLASS-MEM[R].HH.B1)>1 THEN D:=D+EQTB[3864].INT;
IF EQTB[3879].INT>2 THEN{796}BEGIN IF PRINTHEAD<>CURP THEN{797}BEGIN
SAVELINK:=MEM[CURP].HH.RH;MEM[CURP].HH.RH:=0;PRINTNL(226);
SHORTDISPLAY(MEM[PRINTHEAD].HH.RH);MEM[CURP].HH.RH:=SAVELINK;
PRINTHEAD:=CURP;END;PRINTNL(64);
IF CURP=0 THEN PRINTESC(409)ELSE IF MEM[CURP].HH.B0<>10 THEN BEGIN IF
MEM[CURP].HH.B0=12 THEN PRINTESC(345)ELSE IF MEM[CURP].HH.B0=7 THEN
PRINTESC(213)ELSE IF MEM[CURP].HH.B0=11 THEN PRINTESC(205)ELSE PRINTESC(
207);END;PRINT(734);
IF MEM[R+1].HH.RH=0 THEN PRINTCHAR(48)ELSE PRINTINT(MEM[MEM[R+1].HH.RH].
HH.LH);PRINT(735);IF ARTIFICIALBA THEN PRINTCHAR(42)ELSE PRINTINT(B);
PRINT(736);PRINTINT(PI);PRINT(737);PRINTINT(D);END;D:=D+MEM[R+2].INT;
IF D<=MINIMALDEMER[FITCLASS]THEN BEGIN MINIMALDEMER[FITCLASS]:=D;
BESTPLACE[FITCLASS]:=MEM[R+1].HH.RH;BESTPLLINE[FITCLASS]:=L;
IF D<MINIMUMDEMER THEN MINIMUMDEMER:=D;END;IF NODERSTAYSAC THEN GOTO 22;
60:{800}MEM[PREVR].HH.RH:=MEM[R].HH.RH;FREENODE(R,3);
IF PREVR=25006 THEN{801}BEGIN R:=MEM[25006].HH.RH;
IF MEM[R].HH.B0=2 THEN BEGIN ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[R+1].INT
;ACTIVEWIDTH[2]:=ACTIVEWIDTH[2]+MEM[R+2].INT;
ACTIVEWIDTH[3]:=ACTIVEWIDTH[3]+MEM[R+3].INT;
ACTIVEWIDTH[4]:=ACTIVEWIDTH[4]+MEM[R+4].INT;
ACTIVEWIDTH[5]:=ACTIVEWIDTH[5]+MEM[R+5].INT;
ACTIVEWIDTH[6]:=ACTIVEWIDTH[6]+MEM[R+6].INT;
CURACTIVEWID[1]:=ACTIVEWIDTH[1];CURACTIVEWID[2]:=ACTIVEWIDTH[2];
CURACTIVEWID[3]:=ACTIVEWIDTH[3];CURACTIVEWID[4]:=ACTIVEWIDTH[4];
CURACTIVEWID[5]:=ACTIVEWIDTH[5];CURACTIVEWID[6]:=ACTIVEWIDTH[6];
MEM[25006].HH.RH:=MEM[R].HH.RH;FREENODE(R,7);END;
END ELSE IF MEM[PREVR].HH.B0=2 THEN BEGIN R:=MEM[PREVR].HH.RH;
IF R=25006 THEN BEGIN CURACTIVEWID[1]:=CURACTIVEWID[1]-MEM[PREVR+1].INT;
CURACTIVEWID[2]:=CURACTIVEWID[2]-MEM[PREVR+2].INT;
CURACTIVEWID[3]:=CURACTIVEWID[3]-MEM[PREVR+3].INT;
CURACTIVEWID[4]:=CURACTIVEWID[4]-MEM[PREVR+4].INT;
CURACTIVEWID[5]:=CURACTIVEWID[5]-MEM[PREVR+5].INT;
CURACTIVEWID[6]:=CURACTIVEWID[6]-MEM[PREVR+6].INT;
MEM[PREVPREVR].HH.RH:=25006;FREENODE(PREVR,7);PREVR:=PREVPREVR;
END ELSE IF MEM[R].HH.B0=2 THEN BEGIN CURACTIVEWID[1]:=CURACTIVEWID[1]+
MEM[R+1].INT;CURACTIVEWID[2]:=CURACTIVEWID[2]+MEM[R+2].INT;
CURACTIVEWID[3]:=CURACTIVEWID[3]+MEM[R+3].INT;
CURACTIVEWID[4]:=CURACTIVEWID[4]+MEM[R+4].INT;
CURACTIVEWID[5]:=CURACTIVEWID[5]+MEM[R+5].INT;
CURACTIVEWID[6]:=CURACTIVEWID[6]+MEM[R+6].INT;
MEM[PREVR+1].INT:=MEM[PREVR+1].INT+MEM[R+1].INT;
MEM[PREVR+2].INT:=MEM[PREVR+2].INT+MEM[R+2].INT;
MEM[PREVR+3].INT:=MEM[PREVR+3].INT+MEM[R+3].INT;
MEM[PREVR+4].INT:=MEM[PREVR+4].INT+MEM[R+4].INT;
MEM[PREVR+5].INT:=MEM[PREVR+5].INT+MEM[R+5].INT;
MEM[PREVR+6].INT:=MEM[PREVR+6].INT+MEM[R+6].INT;
MEM[PREVR].HH.RH:=MEM[R].HH.RH;FREENODE(R,7);END;END;END;END;
10:{798}IF CURP=PRINTHEAD THEN IF CURP<>0 THEN IF MEM[CURP].HH.B0=7 THEN
BEGIN T:=MEM[CURP].HH.B1;WHILE T>0 DO BEGIN T:=T-1;
PRINTHEAD:=MEM[PRINTHEAD].HH.RH;END;END END;
{817}PROCEDURE POSTLINEBREA(FINALWIDOWPE:INTEGER);LABEL 30,31;
VAR Q,R,S:HALFWORD;DISCBREAK:BOOLEAN;CURWIDTH:SCALED;CURINDENT:SCALED;
T:QUARTERWORD;PEN:INTEGER;CURLINE:HALFWORD;
BEGIN{818}Q:=MEM[BESTBET+1].HH.RH;CURP:=0;REPEAT R:=Q;Q:=MEM[Q+1].HH.LH;
MEM[R+1].HH.LH:=CURP;CURP:=R;UNTIL Q=0;CURLINE:=CURLIST.ALREADYFIELD+1;
REPEAT{820}{821}Q:=MEM[CURP+1].HH.RH;DISCBREAK:=FALSE;
IF Q<>0 THEN IF MEM[Q].HH.B0=10 THEN BEGIN DELETEGLUERE(MEM[Q+1].HH.LH);
MEM[Q+1].HH.LH:=EQTB[2375].HH.RH;MEM[Q].HH.B1:=8;
MEM[EQTB[2375].HH.RH].HH.RH:=MEM[EQTB[2375].HH.RH].HH.RH+1;GOTO 30;
END ELSE BEGIN IF MEM[Q].HH.B0=7 THEN{822}BEGIN T:=MEM[Q].HH.B1;
{823}IF T=0 THEN R:=MEM[Q].HH.RH ELSE BEGIN R:=Q;
WHILE T>1 DO BEGIN R:=MEM[R].HH.RH;T:=T-1;END;S:=MEM[R].HH.RH;
IF NOT(S>25000)THEN IF MEM[CURP+1].HH.LH<>0 THEN IF MEM[MEM[CURP+1].HH.
LH+1].HH.RH=S THEN S:=R;R:=MEM[S].HH.RH;MEM[S].HH.RH:=0;
FLUSHNODELIS(MEM[Q].HH.RH);MEM[Q].HH.B1:=0;END;
IF MEM[Q+1].HH.RH<>0 THEN{824}BEGIN S:=MEM[Q+1].HH.RH;
WHILE MEM[S].HH.RH<>0 DO S:=MEM[S].HH.RH;MEM[S].HH.RH:=R;
R:=MEM[Q+1].HH.RH;MEM[Q+1].HH.RH:=0;END;
IF MEM[Q+1].HH.LH<>0 THEN{825}BEGIN S:=MEM[Q+1].HH.LH;MEM[Q].HH.RH:=S;
WHILE MEM[S].HH.RH<>0 DO S:=MEM[S].HH.RH;MEM[Q+1].HH.LH:=0;Q:=S;END;
MEM[Q].HH.RH:=R;DISCBREAK:=TRUE;END;
IF(MEM[Q].HH.B0=9)OR(MEM[Q].HH.B0=11)THEN MEM[Q+1].INT:=0;
END ELSE BEGIN Q:=25003;WHILE MEM[Q].HH.RH<>0 DO Q:=MEM[Q].HH.RH;END;
{826}R:=NEWPARAMGLUE(7);MEM[R].HH.RH:=MEM[Q].HH.RH;MEM[Q].HH.RH:=R;Q:=R;
30:;{827}R:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;Q:=MEM[25003].HH.RH;
MEM[25003].HH.RH:=R;
IF EQTB[2374].HH.RH<>0 THEN BEGIN R:=NEWPARAMGLUE(6);MEM[R].HH.RH:=Q;
Q:=R;END;{828}IF CURLINE>LASTSPECIALL THEN BEGIN CURWIDTH:=SECONDWIDTH;
CURINDENT:=SECONDINDENT;
END ELSE IF EQTB[2897].HH.RH=0 THEN BEGIN CURWIDTH:=FIRSTWIDTH;
CURINDENT:=FIRSTINDENT;
END ELSE BEGIN CURWIDTH:=MEM[EQTB[2897].HH.RH+2*CURLINE].INT;
CURINDENT:=MEM[EQTB[2897].HH.RH+2*CURLINE-1].INT;END;
JUSTBOX:=HPACK(Q,CURWIDTH,0);MEM[JUSTBOX+4].INT:=CURINDENT;
{829}APPENDTOVLIS(JUSTBOX);
IF MEM[25005].HH.RH<>0 THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=MEM[
25005].HH.RH;REPEAT CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
UNTIL MEM[CURLIST.TAILFIELD].HH.RH=0;END;
{830}IF CURLINE+1=BESTLINE THEN PEN:=0 ELSE PEN:=EQTB[3861].INT;
IF(CURLINE=CURLIST.ALREADYFIELD+1)AND(BESTLINE<>CURLIST.ALREADYFIELD+2)
THEN PEN:=PEN+EQTB[3854].INT;
IF CURLINE+2=BESTLINE THEN PEN:=PEN+FINALWIDOWPE;
IF DISCBREAK THEN PEN:=PEN+EQTB[3856].INT;
IF PEN<>0 THEN BEGIN R:=NEWPENALTY(PEN);MEM[CURLIST.TAILFIELD].HH.RH:=R;
CURLIST.TAILFIELD:=R;END;CURLINE:=CURLINE+1;CURP:=MEM[CURP+1].HH.LH;
IF CURP<>0 THEN{819}BEGIN R:=25003;WHILE TRUE DO BEGIN Q:=MEM[R].HH.RH;
IF Q=MEM[CURP+1].HH.RH THEN GOTO 31;IF(Q>25000)THEN GOTO 31;
IF(MEM[Q].HH.B0<9)THEN GOTO 31;R:=Q;END;
31:IF R<>25003 THEN BEGIN MEM[R].HH.RH:=0;
FLUSHNODELIS(MEM[25003].HH.RH);MEM[25003].HH.RH:=Q;END;END;UNTIL CURP=0;
IF(CURLINE<>BESTLINE)OR(MEM[25003].HH.RH<>0)THEN CONFUSION(742);
CURLIST.ALREADYFIELD:=BESTLINE-1;END;
{835}{846}FUNCTION RECONSTITUTE(J,N:SMALLNUMBER):SMALLNUMBER;
LABEL 22,30;VAR P:HALFWORD;S:HALFWORD;Q:FOURQUARTERS;C:QUARTERWORD;
D:QUARTERWORD;W:SCALED;R:0..FONTMEMSIZE;BEGIN{847}HYPHENPASSED:=0;
S:=25004;W:=0;D:=HU[J];C:=D;WHILE TRUE DO BEGIN 22:P:=GETAVAIL;
MEM[P].HH.B0:=HF;MEM[P].HH.B1:=C;MEM[S].HH.RH:=P;
{848}IF J=N THEN GOTO 30;Q:=FONTINFO[CHARBASE[HF]+D].QQQQ;
IF(Q.B2 MOD 4)<>1 THEN GOTO 30;R:=LIGKERNBASE[HF]+Q.B3;C:=HU[J+1];
WHILE TRUE DO BEGIN Q:=FONTINFO[R].QQQQ;
IF Q.B1=C THEN BEGIN IF ODD(HYF[J])AND(HYPHENPASSED=0)THEN HYPHENPASSED
:=J;IF Q.B2<128 THEN{849}BEGIN D:=Q.B3;J:=J+1;S:=P;GOTO 22;
END ELSE BEGIN W:=FONTINFO[KERNBASE[HF]+Q.B3].INT;GOTO 30;END;
END ELSE IF Q.B0<128 THEN R:=R+1 ELSE GOTO 30;END;END;30:;
{850}IF S<>25004 THEN BEGIN P:=NEWLIGATURE(HF,D,MEM[25004].HH.RH);
MEM[25004].HH.RH:=P;END;
{851}IF W<>0 THEN MEM[MEM[25004].HH.RH].HH.RH:=NEWKERN(W);
RECONSTITUTE:=J;END;PROCEDURE HYPHENATE;LABEL 30,40,45,41,10;
VAR{841}I,J,L:SMALLNUMBER;Q,R,S:HALFWORD;
{852}MAJORTAIL,MINORTAIL:HALFWORD;C:ASCIICODE;{862}Z:TRIEPOINTER;
V:QUARTERWORD;{869}H:HYPHPOINTER;K:STRNUMBER;U:POOLPOINTER;
BEGIN{863}FOR J:=0 TO HN DO HYF[J]:=0;{870}H:=HC[1];
FOR J:=2 TO HN DO H:=(H+H+HC[J])MOD 307;
WHILE TRUE DO BEGIN{871}K:=HYPHWORD[H];IF K=0 THEN GOTO 45;
IF(STRSTART[K+1]-STRSTART[K])<HN THEN GOTO 45;
IF(STRSTART[K+1]-STRSTART[K])=HN THEN BEGIN J:=1;U:=STRSTART[K];
REPEAT IF STRPOOL[U]<HC[J]THEN GOTO 45;IF STRPOOL[U]>HC[J]THEN GOTO 30;
J:=J+1;U:=U+1;UNTIL J>HN;{872}S:=HYPHLIST[H];
WHILE S<>0 DO BEGIN HYF[MEM[S].HH.LH]:=1;S:=MEM[S].HH.RH;END;GOTO 40;
END;30:;IF H>0 THEN H:=H-1 ELSE H:=307;END;45:;HC[0]:=127;HC[HN+1]:=127;
HC[HN+2]:=256;FOR J:=0 TO HN-2 DO BEGIN Z:=HC[J];L:=J;
WHILE HC[L]=TRIE[Z].B1 DO BEGIN IF TRIE[Z].B0<>0 THEN{864}BEGIN V:=TRIE[
Z].B0;REPEAT I:=L-HYFDISTANCE[V];
IF HYFNUM[V]>HYF[I]THEN HYF[I]:=HYFNUM[V];V:=HYFNEXT[V];UNTIL V=0;END;
L:=L+1;Z:=TRIE[Z].RH+HC[L];END;END;40:HYF[1]:=0;HYF[HN-2]:=0;
HYF[HN-1]:=0;HYF[HN]:=0;
{842}FOR J:=2 TO HN-3 DO IF ODD(HYF[J])THEN GOTO 41;GOTO 10;41:;
{843}Q:=MEM[HB].HH.RH;MEM[HB].HH.RH:=0;S:=CURP;
WHILE MEM[S].HH.RH<>HA DO S:=MEM[S].HH.RH;MEM[S].HH.RH:=0;
FLUSHNODELIS(HA);{853}J:=0;REPEAT L:=J;J:=RECONSTITUTE(J+1,HN);
IF HYPHENPASSED<>0 THEN{854}BEGIN R:=GETNODE(2);MEM[S].HH.RH:=R;
MEM[R].HH.RH:=MEM[25004].HH.RH;MEM[R].HH.B0:=7;
MAJORTAIL:=MEM[25004].HH.RH;
IF MEM[MAJORTAIL].HH.RH<>0 THEN MAJORTAIL:=MEM[MAJORTAIL].HH.RH;
I:=HYPHENPASSED;{855}MINORTAIL:=0;C:=HU[I+1];HU[I+1]:=45;
REPEAT L:=RECONSTITUTE(L+1,I+1);
IF MINORTAIL=0 THEN MEM[R+1].HH.LH:=MEM[25004].HH.RH ELSE MEM[MINORTAIL]
.HH.RH:=MEM[25004].HH.RH;MINORTAIL:=MEM[25004].HH.RH;
IF MEM[MINORTAIL].HH.RH<>0 THEN MINORTAIL:=MEM[MINORTAIL].HH.RH;
UNTIL L>I;HU[I+1]:=C;L:=L-1;HYF[L]:=0;{856}MINORTAIL:=0;
MEM[R+1].HH.RH:=0;WHILE L<J DO BEGIN REPEAT L:=RECONSTITUTE(L+1,HN);
IF MINORTAIL=0 THEN MEM[R+1].HH.RH:=MEM[25004].HH.RH ELSE MEM[MINORTAIL]
.HH.RH:=MEM[25004].HH.RH;MINORTAIL:=MEM[25004].HH.RH;
IF MEM[MINORTAIL].HH.RH<>0 THEN BEGIN HYF[L]:=0;
MINORTAIL:=MEM[MINORTAIL].HH.RH;END;UNTIL L>=J;
WHILE L>J DO BEGIN J:=RECONSTITUTE(J+1,HN);
MEM[MAJORTAIL].HH.RH:=MEM[25004].HH.RH;MAJORTAIL:=MEM[25004].HH.RH;
IF MEM[MAJORTAIL].HH.RH<>0 THEN BEGIN HYF[J]:=0;
MAJORTAIL:=MEM[MAJORTAIL].HH.RH;END;END;END;{857}I:=0;S:=R;
WHILE MEM[S].HH.RH<>0 DO BEGIN I:=I+1;S:=MEM[S].HH.RH;END;
MEM[R].HH.B1:=I;END ELSE BEGIN MEM[S].HH.RH:=MEM[25004].HH.RH;
S:=MEM[S].HH.RH;IF MEM[S].HH.RH<>0 THEN S:=MEM[S].HH.RH;END;
IF ODD(HYF[J])THEN{858}BEGIN R:=NEWDISC;
MEM[R+1].HH.LH:=NEWCHARACTER(HF,45);MEM[S].HH.RH:=R;S:=R;END;UNTIL J=HN;
MEM[S].HH.RH:=Q;10:END;PROCEDURE LINEBREAK(FINALWIDOWPE:INTEGER);
LABEL 30,31,32,33,34;VAR{802}AUTOBREAKING:BOOLEAN;PREVP:HALFWORD;
Q,R,S:HALFWORD;F:INTERNALFONT;{833}I,J,L:SMALLNUMBER;C:0..255;
BEGIN PARBEGINLINE:=CURLIST.MLFIELD;
{756}MEM[25003].HH.RH:=MEM[CURLIST.HEADFIELD].HH.RH;
IF(CURLIST.TAILFIELD>25000)THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=
NEWPENALTY(10000);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END ELSE IF(MEM[CURLIST.TAILFIELD].HH.B0<>10)OR(MEM[CURLIST.TAILFIELD].
HH.B1>=100)THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(10000);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END ELSE BEGIN MEM[CURLIST.TAILFIELD].HH.B0:=12;
DELETEGLUERE(MEM[CURLIST.TAILFIELD+1].HH.LH);
MEM[CURLIST.TAILFIELD+1].INT:=10000;END;
MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(13);POPNEST;
{767}NOSHRINKERRO:=TRUE;
IF(MEM[EQTB[2374].HH.RH].HH.B1<>0)AND(MEM[EQTB[2374].HH.RH+3].INT<>0)
THEN BEGIN EQTB[2374].HH.RH:=FINITESHRINK(EQTB[2374].HH.RH);END;
IF(MEM[EQTB[2375].HH.RH].HH.B1<>0)AND(MEM[EQTB[2375].HH.RH+3].INT<>0)
THEN BEGIN EQTB[2375].HH.RH:=FINITESHRINK(EQTB[2375].HH.RH);END;
Q:=EQTB[2374].HH.RH;R:=EQTB[2375].HH.RH;
BACKGROUND[1]:=MEM[Q+1].INT+MEM[R+1].INT;BACKGROUND[2]:=0;
BACKGROUND[3]:=0;BACKGROUND[4]:=0;BACKGROUND[5]:=0;
BACKGROUND[2+MEM[Q].HH.B0]:=MEM[Q+2].INT;
BACKGROUND[2+MEM[R].HH.B0]:=BACKGROUND[2+MEM[R].HH.B0]+MEM[R+2].INT;
BACKGROUND[6]:=MEM[Q+3].INT+MEM[R+3].INT;{774}MINIMUMDEMER:=1073741823;
MINIMALDEMER[0]:=1073741823;MINIMALDEMER[1]:=1073741823;
MINIMALDEMER[2]:=1073741823;MINIMALDEMER[3]:=1073741823;
{788}IF EQTB[2897].HH.RH=0 THEN IF EQTB[4289].INT=0 THEN BEGIN
LASTSPECIALL:=0;SECONDWIDTH:=EQTB[4275].INT;SECONDINDENT:=0;
END ELSE{789}BEGIN LASTSPECIALL:=ABS(EQTB[3886].INT);
IF EQTB[3886].INT<0 THEN BEGIN FIRSTWIDTH:=EQTB[4275].INT-ABS(EQTB[4289]
.INT);
IF EQTB[4289].INT>=0 THEN FIRSTINDENT:=EQTB[4289].INT ELSE FIRSTINDENT:=
0;SECONDWIDTH:=EQTB[4275].INT;SECONDINDENT:=0;
END ELSE BEGIN FIRSTWIDTH:=EQTB[4275].INT;FIRSTINDENT:=0;
SECONDWIDTH:=EQTB[4275].INT-ABS(EQTB[4289].INT);
IF EQTB[4289].INT>=0 THEN SECONDINDENT:=EQTB[4289].INT ELSE SECONDINDENT
:=0;END;END ELSE BEGIN LASTSPECIALL:=MEM[EQTB[2897].HH.RH].HH.LH-1;
SECONDWIDTH:=MEM[EQTB[2897].HH.RH+2*(LASTSPECIALL+1)].INT;
SECONDINDENT:=MEM[EQTB[2897].HH.RH+2*LASTSPECIALL+1].INT;END;
IF EQTB[3867].INT=0 THEN EASYLINE:=LASTSPECIALL ELSE EASYLINE:=262143;
{803}THRESHOLD:=EQTB[3849].INT;
IF THRESHOLD>=0 THEN BEGIN IF EQTB[3879].INT>2 THEN BEGIN BEGINDIAGNOS;
PRINTNL(738);END;SECONDPASS:=FALSE;
END ELSE BEGIN THRESHOLD:=EQTB[3850].INT;SECONDPASS:=TRUE;END;
WHILE TRUE DO BEGIN{804}Q:=GETNODE(3);MEM[Q].HH.B0:=0;MEM[Q].HH.B1:=1;
MEM[Q].HH.RH:=25006;MEM[Q+1].HH.RH:=0;
MEM[Q+1].HH.LH:=CURLIST.ALREADYFIELD+1;MEM[Q+2].INT:=0;
MEM[25006].HH.RH:=Q;ACTIVEWIDTH[1]:=BACKGROUND[1];
ACTIVEWIDTH[2]:=BACKGROUND[2];ACTIVEWIDTH[3]:=BACKGROUND[3];
ACTIVEWIDTH[4]:=BACKGROUND[4];ACTIVEWIDTH[5]:=BACKGROUND[5];
ACTIVEWIDTH[6]:=BACKGROUND[6];PASSIVE:=0;PRINTHEAD:=25003;PASSNUMBER:=0;
FONTINSHORTD:=0;CURP:=MEM[25003].HH.RH;AUTOBREAKING:=TRUE;PREVP:=CURP;
WHILE(CURP<>0)AND(MEM[25006].HH.RH<>25006)DO{806}BEGIN IF(CURP>25000)
THEN{807}BEGIN PREVP:=CURP;REPEAT F:=MEM[CURP].HH.B0;
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F
]+MEM[CURP].HH.B1].QQQQ.B0].INT;CURP:=MEM[CURP].HH.RH;
UNTIL NOT(CURP>25000);END;
CASE MEM[CURP].HH.B0 OF 0,1,2:ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[CURP+1]
.INT;8:{1282};
10:BEGIN{808}IF AUTOBREAKING THEN BEGIN IF(PREVP>25000)THEN TRYBREAK(0,0
)ELSE IF(MEM[PREVP].HH.B0<9)THEN TRYBREAK(0,0);END;
{809}BEGIN IF(MEM[MEM[CURP+1].HH.LH].HH.B1<>0)AND(MEM[MEM[CURP+1].HH.LH
+3].INT<>0)THEN BEGIN MEM[CURP+1].HH.LH:=FINITESHRINK(MEM[CURP+1].HH.LH)
;END;Q:=MEM[CURP+1].HH.LH;ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[Q+1].INT;
ACTIVEWIDTH[2+MEM[Q].HH.B0]:=ACTIVEWIDTH[2+MEM[Q].HH.B0]+MEM[Q+2].INT;
ACTIVEWIDTH[6]:=ACTIVEWIDTH[6]+MEM[Q+3].INT;END;
IF SECONDPASS AND AUTOBREAKING THEN{834}BEGIN S:=MEM[CURP].HH.RH;
IF S<>0 THEN BEGIN{836}WHILE TRUE DO BEGIN IF(S>25000)THEN BEGIN C:=MEM[
S].HH.B1;HF:=MEM[S].HH.B0;
END ELSE IF MEM[S].HH.B0=6 THEN BEGIN Q:=MEM[S+1].HH.RH;C:=MEM[Q].HH.B1;
HF:=MEM[Q].HH.B0;END ELSE IF MEM[S].HH.B0<>11 THEN GOTO 31 ELSE C:=128;
IF C<128 THEN IF EQTB[3465+C].HH.RH<>0 THEN IF(EQTB[3465+C].HH.RH=C)OR(
EQTB[3883].INT<>0)THEN GOTO 32 ELSE GOTO 31;S:=MEM[S].HH.RH;END;
32:HA:=S;{837}HN:=0;
WHILE TRUE DO BEGIN IF(S>25000)THEN BEGIN IF MEM[S].HH.B0<>HF THEN GOTO
33;C:=MEM[S].HH.B1;IF C>=128 THEN GOTO 33;
IF(EQTB[3465+C].HH.RH=0)OR(HN=63)THEN GOTO 33;HB:=S;HN:=HN+1;HU[HN]:=C;
HC[HN]:=EQTB[3465+C].HH.RH;
END ELSE IF MEM[S].HH.B0=6 THEN{838}BEGIN J:=HN;Q:=MEM[S+1].HH.RH;
IF MEM[Q].HH.B0<>HF THEN GOTO 33;REPEAT C:=MEM[Q].HH.B1;
IF C>=128 THEN GOTO 33;IF(EQTB[3465+C].HH.RH=0)OR(J=63)THEN GOTO 33;
J:=J+1;HU[J]:=C;HC[J]:=EQTB[3465+C].HH.RH;Q:=MEM[Q].HH.RH;UNTIL Q=0;
HB:=S;HN:=J;END ELSE IF MEM[S].HH.B0<>11 THEN GOTO 33;S:=MEM[S].HH.RH;
END;33:;{839}IF HN<5 THEN GOTO 31;
WHILE TRUE DO BEGIN IF NOT((S>25000))THEN CASE MEM[S].HH.B0 OF 6,11:;
10,12,3,5,4:GOTO 34;OTHERS:GOTO 31 END;S:=MEM[S].HH.RH;END;34:;
HYPHENATE;END;31:END;END;
11:BEGIN IF NOT(MEM[CURP].HH.RH>25000)AND AUTOBREAKING THEN IF MEM[MEM[
CURP].HH.RH].HH.B0=10 THEN TRYBREAK(0,0);
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[CURP+1].INT;END;
6:BEGIN F:=MEM[CURP+1].HH.B0;
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F
]+MEM[CURP+1].HH.B1].QQQQ.B0].INT;END;7:{810}BEGIN S:=MEM[CURP+1].HH.LH;
IF S=0 THEN TRYBREAK(EQTB[3853].INT,1)ELSE BEGIN DISCWIDTH:=0;
REPEAT{811}IF(S>25000)THEN BEGIN F:=MEM[S].HH.B0;
DISCWIDTH:=DISCWIDTH+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[S].
HH.B1].QQQQ.B0].INT;
END ELSE CASE MEM[S].HH.B0 OF 6:BEGIN F:=MEM[S+1].HH.B0;
DISCWIDTH:=DISCWIDTH+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[S+1]
.HH.B1].QQQQ.B0].INT;END;11:DISCWIDTH:=DISCWIDTH+MEM[S+1].INT;
OTHERS:CONFUSION(741)END;S:=MEM[S].HH.RH;UNTIL S=0;
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+DISCWIDTH;TRYBREAK(EQTB[3852].INT,1);
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]-DISCWIDTH;END;END;
9:BEGIN AUTOBREAKING:=(MEM[CURP].HH.B1=1);
BEGIN IF NOT(MEM[CURP].HH.RH>25000)AND AUTOBREAKING THEN IF MEM[MEM[CURP
].HH.RH].HH.B0=10 THEN TRYBREAK(0,0);
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[CURP+1].INT;END;END;
12:TRYBREAK(MEM[CURP+1].INT,0);4,3,5:;OTHERS:CONFUSION(740)END;
PREVP:=CURP;CURP:=MEM[CURP].HH.RH;END;
IF CURP=0 THEN{813}BEGIN TRYBREAK(-10000,1);
IF MEM[25006].HH.RH<>25006 THEN BEGIN{814}R:=MEM[25006].HH.RH;
FEWESTDEMERI:=1073741823;
REPEAT IF MEM[R].HH.B0<>2 THEN IF MEM[R+2].INT<FEWESTDEMERI THEN BEGIN
FEWESTDEMERI:=MEM[R+2].INT;BESTBET:=R;END;R:=MEM[R].HH.RH;UNTIL R=25006;
BESTLINE:=MEM[BESTBET+1].HH.LH;IF EQTB[3867].INT=0 THEN GOTO 30;
{815}BEGIN R:=MEM[25006].HH.RH;ACTUALLOOSEN:=0;
REPEAT IF MEM[R].HH.B0<>2 THEN BEGIN LINEDIFF:=MEM[R+1].HH.LH-BESTLINE;
IF((LINEDIFF<ACTUALLOOSEN)AND(EQTB[3867].INT<=LINEDIFF))OR((LINEDIFF>
ACTUALLOOSEN)AND(EQTB[3867].INT>=LINEDIFF))THEN BEGIN BESTBET:=R;
ACTUALLOOSEN:=LINEDIFF;FEWESTDEMERI:=MEM[R+2].INT;
END ELSE IF(LINEDIFF=ACTUALLOOSEN)AND(MEM[R+2].INT<FEWESTDEMERI)THEN
BEGIN BESTBET:=R;FEWESTDEMERI:=MEM[R+2].INT;END;END;R:=MEM[R].HH.RH;
UNTIL R=25006;BESTLINE:=MEM[BESTBET+1].HH.LH;END;
IF(ACTUALLOOSEN=EQTB[3867].INT)OR SECONDPASS THEN GOTO 30;END;END;
{805}Q:=MEM[25006].HH.RH;WHILE Q<>25006 DO BEGIN CURP:=MEM[Q].HH.RH;
IF MEM[Q].HH.B0=2 THEN FREENODE(Q,7)ELSE FREENODE(Q,3);Q:=CURP;END;
Q:=PASSIVE;WHILE Q<>0 DO BEGIN CURP:=MEM[Q].HH.RH;FREENODE(Q,2);Q:=CURP;
END;IF EQTB[3879].INT>2 THEN PRINTNL(739);THRESHOLD:=EQTB[3850].INT;
SECONDPASS:=TRUE;END;30:IF EQTB[3879].INT>2 THEN ENDDIAGNOSTI(TRUE);;
{816}POSTLINEBREA(FINALWIDOWPE);{805}Q:=MEM[25006].HH.RH;
WHILE Q<>25006 DO BEGIN CURP:=MEM[Q].HH.RH;
IF MEM[Q].HH.B0=2 THEN FREENODE(Q,7)ELSE FREENODE(Q,3);Q:=CURP;END;
Q:=PASSIVE;WHILE Q<>0 DO BEGIN CURP:=MEM[Q].HH.RH;FREENODE(Q,2);Q:=CURP;
END;PARBEGINLINE:=0;END;{874}PROCEDURE NEWHYPHEXCEP;LABEL 10,40,45;
VAR N:SMALLNUMBER;J:SMALLNUMBER;H:HYPHPOINTER;K:STRNUMBER;P:HALFWORD;
Q:HALFWORD;S,T:STRNUMBER;U,V:POOLPOINTER;BEGIN SCANLEFTBRAC;{875}N:=0;
P:=0;WHILE TRUE DO BEGIN GETXTOKEN;
CASE CURCMD OF 11,12:{877}IF CURCHR=45 THEN{878}BEGIN IF N>1 THEN BEGIN
Q:=GETAVAIL;MEM[Q].HH.RH:=P;MEM[Q].HH.LH:=N;P:=Q;END;
END ELSE BEGIN IF EQTB[3465+CURCHR].HH.RH=0 THEN BEGIN PRINTNL(747);
BEGIN HELPPTR:=2;HELPLINE[1]:=748;HELPLINE[0]:=749;END;ERROR;
END ELSE IF N<63 THEN BEGIN N:=N+1;HC[N]:=EQTB[3465+CURCHR].HH.RH;END;
END;10,2:BEGIN IF N>4 THEN{879}BEGIN BEGIN IF POOLPTR+N>POOLSIZE THEN
OVERFLOW(129,POOLSIZE);END;H:=0;
FOR J:=1 TO N DO BEGIN H:=(H+H+HC[J])MOD 307;
BEGIN STRPOOL[POOLPTR]:=HC[J];POOLPTR:=POOLPTR+1;END;END;S:=MAKESTRING;
WHILE MEM[P].HH.LH>N-3 DO BEGIN Q:=MEM[P].HH.RH;
BEGIN MEM[P].HH.RH:=AVAIL;AVAIL:=P;DYNUSED:=DYNUSED-1;END;P:=Q;END;
{880}IF HYPHCOUNT=307 THEN OVERFLOW(750,307);HYPHCOUNT:=HYPHCOUNT+1;
WHILE HYPHWORD[H]<>0 DO BEGIN{881}K:=HYPHWORD[H];
IF(STRSTART[K+1]-STRSTART[K])<(STRSTART[S+1]-STRSTART[S])THEN GOTO 40;
IF(STRSTART[K+1]-STRSTART[K])>(STRSTART[S+1]-STRSTART[S])THEN GOTO 45;
U:=STRSTART[K];V:=STRSTART[S];
REPEAT IF STRPOOL[U]<STRPOOL[V]THEN GOTO 40;
IF STRPOOL[U]>STRPOOL[V]THEN GOTO 45;U:=U+1;V:=V+1;
UNTIL U=STRSTART[K+1];40:Q:=HYPHLIST[H];HYPHLIST[H]:=P;P:=Q;
T:=HYPHWORD[H];HYPHWORD[H]:=S;S:=T;45:;IF H>0 THEN H:=H-1 ELSE H:=307;
END;HYPHWORD[H]:=S;HYPHLIST[H]:=P;END;
IF CURCMD=2 THEN BEGIN{408}BEGIN GETTOKEN;IF CURCMD<>10 THEN BACKINPUT;
END;GOTO 10;END;N:=0;P:=0;END;OTHERS:{876}BEGIN PRINTNL(744);
BEGIN HELPPTR:=2;HELPLINE[1]:=745;HELPLINE[0]:=746;END;ERROR;END END;
END;10:END;{882}{[884]FUNCTION NEWTRIEOP(D,N:SMALLNUMBER;
V:QUARTERWORD):QUARTERWORD;LABEL 10;VAR H:0..1022;U:QUARTERWORD;
BEGIN H:=ABS(N+313*D+361*V)MOD 1022;
WHILE TRUE DO BEGIN U:=TRIEOPHASH[H];
IF U=0 THEN BEGIN IF TRIEOPPTR>=510 THEN BEGIN TRIEOPPTR:=511;
NEWTRIEOP:=0;GOTO 10;END;TRIEOPPTR:=TRIEOPPTR+1;
HYFDISTANCE[TRIEOPPTR]:=D;HYFNUM[TRIEOPPTR]:=N;HYFNEXT[TRIEOPPTR]:=V;
TRIEOPHASH[H]:=TRIEOPPTR;NEWTRIEOP:=TRIEOPPTR;GOTO 10;END;
IF(HYFDISTANCE[U]=D)AND(HYFNUM[U]=N)AND(HYFNEXT[U]=V)THEN BEGIN
NEWTRIEOP:=U;GOTO 10;END;IF H>0 THEN H:=H-1 ELSE H:=1022;END;10:END;
[887]FUNCTION TRIENODE(P:TRIEPOINTER):TRIEPOINTER;LABEL 10;
VAR H:TRIEPOINTER;Q:TRIEPOINTER;
BEGIN H:=ABS(TRIEC[P]+1009*TRIEO[P]+2718*TRIEL[P]+3142*TRIER[P])MOD
TRIESIZE;WHILE TRUE DO BEGIN Q:=TRIEHASH[H];
IF Q=0 THEN BEGIN TRIEHASH[H]:=P;TRIENODE:=P;GOTO 10;END;
IF(TRIEC[Q]=TRIEC[P])AND(TRIEO[Q]=TRIEO[P])AND(TRIEL[Q]=TRIEL[P])AND(
TRIER[Q]=TRIER[P])THEN BEGIN TRIENODE:=Q;GOTO 10;END;
IF H>0 THEN H:=H-1 ELSE H:=TRIESIZE;END;10:END;
[888]FUNCTION COMPRESSTRIE(P:TRIEPOINTER):TRIEPOINTER;
BEGIN IF P=0 THEN COMPRESSTRIE:=0 ELSE BEGIN TRIEL[P]:=COMPRESSTRIE(
TRIEL[P]);TRIER[P]:=COMPRESSTRIE(TRIER[P]);COMPRESSTRIE:=TRIENODE(P);
END;END;[889]PROCEDURE INITPATTERNM;VAR H:0..1022;P:TRIEPOINTER;
BEGIN FOR H:=0 TO 1022 DO TRIEOPHASH[H]:=0;TRIEOPPTR:=0;TRIEL[0]:=0;
TRIEC[0]:=0;TRIEPTR:=0;FOR P:=0 TO TRIESIZE DO TRIEHASH[P]:=0;END;
[891]PROCEDURE INITTRIEMEMO;VAR P:TRIEPOINTER;
BEGIN FOR P:=0 TO TRIEPTR DO TRIEHASH[P]:=0;TRIEMAX:=128;TRIEMIN:=128;
TRIE[0].RH:=1;TRIETAKEN[0]:=FALSE;
FOR P:=1 TO 128 DO BEGIN TRIE[P].LH:=P-1;TRIE[P].RH:=P+1;
TRIETAKEN[P]:=FALSE;END;END;[893]PROCEDURE FIRSTFIT(P:TRIEPOINTER);
LABEL 45,40;VAR H:TRIEPOINTER;Z:TRIEPOINTER;Q:TRIEPOINTER;C:ASCIICODE;
BEGIN C:=TRIEC[P];IF C<TRIEMIN THEN TRIEMIN:=C;Z:=TRIE[TRIEMIN-1].RH;
WHILE TRUE DO BEGIN IF Z<C THEN GOTO 45;H:=Z-C;
[894]IF TRIEMAX<H+128 THEN BEGIN IF TRIESIZE<=H+128 THEN OVERFLOW(751,
TRIESIZE);REPEAT TRIEMAX:=TRIEMAX+1;TRIETAKEN[TRIEMAX]:=FALSE;
TRIE[TRIEMAX].RH:=TRIEMAX+1;TRIE[TRIEMAX].LH:=TRIEMAX-1;
UNTIL TRIEMAX=H+128;END;IF TRIETAKEN[H]THEN GOTO 45;[895]Q:=TRIER[P];
WHILE Q>0 DO BEGIN IF TRIE[H+TRIEC[Q]].RH=0 THEN GOTO 45;Q:=TRIER[Q];
END;GOTO 40;45:Z:=TRIE[Z].RH;END;40:[896]TRIETAKEN[H]:=TRUE;
TRIEHASH[P]:=H;Q:=P;REPEAT Z:=H+TRIEC[Q];
TRIE[TRIE[Z].RH].LH:=TRIE[Z].LH;TRIE[TRIE[Z].LH].RH:=TRIE[Z].RH;
TRIE[Z].RH:=0;Q:=TRIER[Q];UNTIL Q=0;END;
[897]PROCEDURE TRIEPACK(P:TRIEPOINTER);VAR Q:TRIEPOINTER;
BEGIN REPEAT Q:=TRIEL[P];
IF(Q>0)AND(TRIEHASH[Q]=0)THEN BEGIN FIRSTFIT(Q);TRIEPACK(Q);END;
P:=TRIER[P];UNTIL P=0;END;[899]PROCEDURE TRIEFIX(P:TRIEPOINTER);
VAR Q:TRIEPOINTER;C:ASCIICODE;Z:TRIEPOINTER;BEGIN Z:=TRIEHASH[P];
WHILE P<>0 DO BEGIN Q:=TRIEL[P];C:=TRIEC[P];TRIE[Z+C].RH:=TRIEHASH[Q];
TRIE[Z+C].B1:=C;TRIE[Z+C].B0:=TRIEO[P];IF Q>0 THEN TRIEFIX(Q);
P:=TRIER[P];END;END;[900]PROCEDURE NEWPATTERNS;LABEL 30,31;
VAR K,L:SMALLNUMBER;DIGITSENSED:BOOLEAN;V:QUARTERWORD;P,Q:TRIEPOINTER;
FIRSTCHILD:BOOLEAN;C:ASCIICODE;R,S:TRIEPOINTER;H:TWOHALVES;
BEGIN SCANLEFTBRAC;INITPATTERNM;[901]K:=0;HYF[0]:=0;DIGITSENSED:=FALSE;
WHILE TRUE DO BEGIN GETXTOKEN;
CASE CURCMD OF 11,12:[902]IF DIGITSENSED OR(CURCHR<48)OR(CURCHR>57)THEN
BEGIN IF CURCHR=46 THEN CURCHR:=127 ELSE BEGIN CURCHR:=EQTB[3465+CURCHR]
.HH.RH;IF CURCHR=0 THEN BEGIN PRINTNL(754);BEGIN HELPPTR:=1;
HELPLINE[0]:=753;END;ERROR;CURCHR:=127;END;END;
IF K<63 THEN BEGIN K:=K+1;HC[K]:=CURCHR;HYF[K]:=0;DIGITSENSED:=FALSE;
END;END ELSE BEGIN HYF[K]:=CURCHR-48;DIGITSENSED:=TRUE;END;
10,2:BEGIN IF K>0 THEN[903]BEGIN[905]L:=K;V:=0;
WHILE TRUE DO BEGIN IF HYF[L]<>0 THEN V:=NEWTRIEOP(K-L,HYF[L],V);
IF L>0 THEN L:=L-1 ELSE GOTO 31;END;31:;Q:=0;WHILE L<K DO BEGIN L:=L+1;
C:=HC[L];P:=TRIEL[Q];FIRSTCHILD:=TRUE;
WHILE(P>0)AND(C>TRIEC[P])DO BEGIN Q:=P;P:=TRIER[Q];FIRSTCHILD:=FALSE;
END;
IF(P=0)OR(C<TRIEC[P])THEN[904]BEGIN IF TRIEPTR=TRIESIZE THEN OVERFLOW(
751,TRIESIZE);TRIEPTR:=TRIEPTR+1;TRIER[TRIEPTR]:=P;P:=TRIEPTR;
TRIEL[P]:=0;IF FIRSTCHILD THEN TRIEL[Q]:=P ELSE TRIER[Q]:=P;TRIEC[P]:=C;
TRIEO[P]:=0;END;Q:=P;END;IF TRIEO[Q]<>0 THEN BEGIN PRINTNL(755);
BEGIN HELPPTR:=1;HELPLINE[0]:=753;END;ERROR;END;TRIEO[Q]:=V;END;
IF CURCMD=2 THEN BEGIN[408]BEGIN GETTOKEN;IF CURCMD<>10 THEN BACKINPUT;
END;GOTO 30;END;K:=0;HYF[0]:=0;DIGITSENSED:=FALSE;END;
OTHERS:BEGIN PRINTNL(752);BEGIN HELPPTR:=1;HELPLINE[0]:=753;END;ERROR;
END END;END;30:;TRIEL[0]:=COMPRESSTRIE(TRIEL[0]);[906]INITTRIEMEMO;
IF TRIEL[0]<>0 THEN BEGIN FIRSTFIT(TRIEL[0]);TRIEPACK(TRIEL[0]);END;
[898]R:=0;WHILE TRIETAKEN[R]DO R:=R+1;TRIEHASH[0]:=R;TRIEFIX(TRIEL[0]);
R:=0;H.RH:=0;H.B0:=0;H.B1:=0;REPEAT S:=TRIE[R].RH;TRIE[R]:=H;R:=S;
UNTIL R>TRIEMAX;END;}{908}FUNCTION PRUNEPAGETOP(P:HALFWORD):HALFWORD;
VAR PREVP:HALFWORD;Q:HALFWORD;BEGIN PREVP:=25003;MEM[25003].HH.RH:=P;
WHILE P<>0 DO CASE MEM[P].HH.B0 OF 0,1,2:{909}BEGIN Q:=NEWSKIPPARAM(9);
MEM[PREVP].HH.RH:=Q;MEM[Q].HH.RH:=P;
IF MEM[TEMPPTR+1].INT>MEM[P+3].INT THEN MEM[TEMPPTR+1].INT:=MEM[TEMPPTR
+1].INT-MEM[P+3].INT ELSE MEM[TEMPPTR+1].INT:=0;P:=0;END;
8,4,3:BEGIN PREVP:=P;P:=MEM[PREVP].HH.RH;END;10,11,12:BEGIN Q:=P;
P:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;MEM[PREVP].HH.RH:=P;FLUSHNODELIS(Q);END;
OTHERS:CONFUSION(756)END;PRUNEPAGETOP:=MEM[25003].HH.RH;END;
{910}FUNCTION VERTBREAK(P:HALFWORD;H:SCALED):HALFWORD;LABEL 30,45,90;
VAR PREVP:HALFWORD;Q,R:HALFWORD;PI:INTEGER;B:INTEGER;
LEASTBADNESS:INTEGER;BESTPLACE:HALFWORD;PREVDP:SCALED;T:SMALLNUMBER;
BEGIN PREVP:=P;LEASTBADNESS:=1073741823;ACTIVEWIDTH[1]:=0;
ACTIVEWIDTH[2]:=0;ACTIVEWIDTH[3]:=0;ACTIVEWIDTH[4]:=0;ACTIVEWIDTH[5]:=0;
ACTIVEWIDTH[6]:=0;PREVDP:=0;
WHILE TRUE DO BEGIN{912}IF P=0 THEN PI:=-10000 ELSE{913}CASE MEM[P].HH.
B0 OF 0,1,2:BEGIN ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+PREVDP+MEM[P+3].INT;
PREVDP:=MEM[P+2].INT;GOTO 45;END;8:{1284}GOTO 45;
10:IF(MEM[PREVP].HH.B0<9)THEN PI:=0 ELSE GOTO 90;
11:BEGIN IF MEM[P].HH.RH=0 THEN T:=12 ELSE T:=MEM[MEM[P].HH.RH].HH.B0;
IF T=10 THEN PI:=0 ELSE GOTO 90;END;12:PI:=MEM[P+1].INT;4,3:GOTO 45;
OTHERS:CONFUSION(757)END;
{914}IF PI<10000 THEN BEGIN{915}IF ACTIVEWIDTH[1]<H THEN IF(ACTIVEWIDTH[
3]<>0)OR(ACTIVEWIDTH[4]<>0)OR(ACTIVEWIDTH[5]<>0)THEN B:=0 ELSE B:=
BADNESS(H-ACTIVEWIDTH[1],ACTIVEWIDTH[2])ELSE IF ACTIVEWIDTH[1]-H>
ACTIVEWIDTH[6]THEN B:=1073741823 ELSE B:=BADNESS(ACTIVEWIDTH[1]-H,
ACTIVEWIDTH[6]);IF B<=10000 THEN IF PI<=-10000 THEN B:=PI ELSE B:=B+PI;
IF B<=LEASTBADNESS THEN BEGIN BESTPLACE:=P;LEASTBADNESS:=B;
BESTHEIGHTPL:=ACTIVEWIDTH[1]+PREVDP;END;
IF(B=1073741823)OR(PI<=-10000)THEN GOTO 30;END;
IF(MEM[P].HH.B0<10)OR(MEM[P].HH.B0>11)THEN GOTO 45;
90:{916}IF MEM[P].HH.B0=11 THEN Q:=P ELSE BEGIN Q:=MEM[P+1].HH.LH;
ACTIVEWIDTH[2+MEM[Q].HH.B0]:=ACTIVEWIDTH[2+MEM[Q].HH.B0]+MEM[Q+2].INT;
ACTIVEWIDTH[6]:=ACTIVEWIDTH[6]+MEM[Q+3].INT;
IF(MEM[Q].HH.B1<>0)AND(MEM[Q+3].INT<>0)THEN BEGIN PRINTNL(758);
BEGIN HELPPTR:=4;HELPLINE[3]:=759;HELPLINE[2]:=760;HELPLINE[1]:=761;
HELPLINE[0]:=727;END;ERROR;R:=NEWSPEC(Q);MEM[R].HH.B1:=0;
DELETEGLUERE(Q);MEM[P+1].HH.LH:=R;END;END;
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+PREVDP+MEM[Q+1].INT;PREVDP:=0;
45:IF PREVDP>EQTB[4278].INT THEN BEGIN ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+
PREVDP-EQTB[4278].INT;PREVDP:=EQTB[4278].INT;END;;PREVP:=P;
P:=MEM[PREVP].HH.RH;END;30:VERTBREAK:=BESTPLACE;END;
{917}FUNCTION VSPLIT(N:EIGHTBITS;H:SCALED):HALFWORD;LABEL 10,30;
VAR V:HALFWORD;P:HALFWORD;Q:HALFWORD;BEGIN V:=EQTB[2903+N].HH.RH;
IF CURMARK[3]<>0 THEN BEGIN DELETETOKENR(CURMARK[3]);CURMARK[3]:=0;
DELETETOKENR(CURMARK[4]);CURMARK[4]:=0;END;
{918}IF V=0 THEN BEGIN VSPLIT:=0;GOTO 10;END;
IF MEM[V].HH.B0<>1 THEN BEGIN PRINTNL(762);BEGIN HELPPTR:=2;
HELPLINE[1]:=763;HELPLINE[0]:=764;END;ERROR;VSPLIT:=0;GOTO 10;END;
Q:=VERTBREAK(MEM[V+5].HH.RH,H);{919}P:=MEM[V+5].HH.RH;
IF P=Q THEN MEM[V+5].HH.RH:=0 ELSE WHILE TRUE DO BEGIN IF MEM[P].HH.B0=4
THEN IF CURMARK[3]=0 THEN BEGIN CURMARK[3]:=MEM[P+1].INT;
CURMARK[4]:=CURMARK[3];MEM[CURMARK[3]].HH.LH:=MEM[CURMARK[3]].HH.LH+2;
END ELSE BEGIN DELETETOKENR(CURMARK[4]);CURMARK[4]:=MEM[P+1].INT;
MEM[CURMARK[4]].HH.LH:=MEM[CURMARK[4]].HH.LH+1;END;
IF MEM[P].HH.RH=Q THEN BEGIN MEM[P].HH.RH:=0;GOTO 30;END;
P:=MEM[P].HH.RH;END;30:;Q:=PRUNEPAGETOP(Q);P:=MEM[V+5].HH.RH;
FREENODE(V,7);
IF Q=0 THEN EQTB[2903+N].HH.RH:=0 ELSE EQTB[2903+N].HH.RH:=VPACKAGE(Q,0,
1,1073741823);VSPLIT:=VPACKAGE(P,H,0,EQTB[4278].INT);10:END;
{924}PROCEDURE FREEZEPAGESP(S:SMALLNUMBER);BEGIN PAGECONTENTS:=S;
PAGESIZE:=EQTB[4276].INT;PAGEDEPTHMAX:=EQTB[4277].INT;CURPAGEDEPTH:=0;
PAGESOFAR[1]:=0;PAGESOFAR[2]:=0;PAGESOFAR[3]:=0;PAGESOFAR[4]:=0;
PAGESOFAR[5]:=0;PAGESOFAR[6]:=0;LEASTPAGEBAD:=1073741823;END;
{929}PROCEDURE BOX255ERROR;BEGIN ERROR;BEGINDIAGNOS;PRINTNL(642);
SHOWBOX(EQTB[3158].HH.RH);ENDDIAGNOSTI(TRUE);
FLUSHNODELIS(EQTB[3158].HH.RH);EQTB[3158].HH.RH:=0;END;
{930}PROCEDURE BUILDPAGE;LABEL 10,30,31,22,80,90;VAR P:HALFWORD;
Q,R,S:HALFWORD;PREVP:HALFWORD;B:INTEGER;PI:INTEGER;N:0..255;
DELTA,H,W:SCALED;WAIT:BOOLEAN;SAVEVBADNESS:INTEGER;SAVEVFUZZ:SCALED;
BEGIN IF(MEM[25001].HH.RH=0)OR OUTPUTACTIVE THEN GOTO 10;
REPEAT 22:P:=MEM[25001].HH.RH;
{932}IF LASTPAGEGLUE<>262143 THEN DELETEGLUERE(LASTPAGEGLUE);
IF MEM[P].HH.B0=10 THEN BEGIN LASTPAGEGLUE:=MEM[P+1].HH.LH;
MEM[LASTPAGEGLUE].HH.RH:=MEM[LASTPAGEGLUE].HH.RH+1;
END ELSE LASTPAGEGLUE:=262143;
{933}{936}CASE MEM[P].HH.B0 OF 0,1,2:IF PAGECONTENTS<2 THEN{937}BEGIN IF
PAGECONTENTS=0 THEN FREEZEPAGESP(2)ELSE PAGECONTENTS:=2;
Q:=NEWSKIPPARAM(8);MEM[Q].HH.RH:=P;
IF MEM[TEMPPTR+1].INT>MEM[P+3].INT THEN MEM[TEMPPTR+1].INT:=MEM[TEMPPTR
+1].INT-MEM[P+3].INT ELSE MEM[TEMPPTR+1].INT:=0;MEM[Q].HH.RH:=P;
MEM[25001].HH.RH:=Q;GOTO 22;
END ELSE{938}BEGIN PAGESOFAR[1]:=PAGESOFAR[1]+CURPAGEDEPTH+MEM[P+3].INT;
CURPAGEDEPTH:=MEM[P+2].INT;GOTO 80;END;8:{1283}GOTO 80;
10:IF PAGECONTENTS<2 THEN GOTO 31 ELSE IF(MEM[PAGETAIL].HH.B0<9)THEN PI
:=0 ELSE GOTO 90;
11:IF PAGECONTENTS<2 THEN GOTO 31 ELSE IF MEM[P].HH.RH=0 THEN GOTO 10
ELSE IF MEM[MEM[P].HH.RH].HH.B0=10 THEN PI:=0 ELSE GOTO 90;
12:IF PAGECONTENTS<2 THEN GOTO 31 ELSE PI:=MEM[P+1].INT;4:GOTO 80;
3:{943}BEGIN IF PAGECONTENTS=0 THEN FREEZEPAGESP(1);N:=MEM[P].HH.B1;
R:=25000;WHILE N>=MEM[MEM[R].HH.RH].HH.B1 DO R:=MEM[R].HH.RH;N:=N;
IF MEM[R].HH.B1<>N THEN{944}BEGIN Q:=GETNODE(4);
MEM[Q].HH.RH:=MEM[R].HH.RH;MEM[R].HH.RH:=Q;R:=Q;MEM[R].HH.B1:=N;
MEM[R].HH.B0:=0;
IF EQTB[2903+N].HH.RH=0 THEN MEM[R+1].INT:=0 ELSE MEM[R+1].INT:=MEM[EQTB
[2903+N].HH.RH+3].INT+MEM[EQTB[2903+N].HH.RH+2].INT;MEM[R+2].HH.LH:=0;
Q:=EQTB[2385+N].HH.RH;H:=XOVERN(MEM[R+1].INT,1000)*EQTB[3887+N].INT;
PAGESIZE:=PAGESIZE-H-MEM[Q+1].INT;
PAGESOFAR[2+MEM[Q].HH.B0]:=PAGESOFAR[2+MEM[Q].HH.B0]+MEM[Q+2].INT;
PAGESOFAR[6]:=PAGESOFAR[6]+MEM[Q+3].INT;
IF(MEM[Q].HH.B1<>0)AND(MEM[Q+3].INT<>0)THEN BEGIN PRINTNL(777);
PRINTINT(N);BEGIN HELPPTR:=3;HELPLINE[2]:=778;HELPLINE[1]:=779;
HELPLINE[0]:=727;END;ERROR;END;END;
IF MEM[R].HH.B0=0 THEN BEGIN MEM[R+2].HH.RH:=P;
DELTA:=PAGESIZE-PAGESOFAR[1]+PAGESOFAR[6];
H:=XOVERN(MEM[P+1].INT,1000)*EQTB[3887+N].INT;
IF(H<=DELTA)AND(MEM[P+1].INT+MEM[R+1].INT<=EQTB[4290+N].INT)THEN BEGIN
PAGESIZE:=PAGESIZE-H;MEM[R+1].INT:=MEM[R+1].INT+MEM[P+1].INT;
END ELSE{945}BEGIN IF EQTB[3887+N].INT<=0 THEN W:=1073741823 ELSE W:=
XOVERN(DELTA,EQTB[3887+N].INT)*1000;
IF W>EQTB[4290+N].INT-MEM[R+1].INT THEN W:=EQTB[4290+N].INT-MEM[R+1].INT
;Q:=VERTBREAK(MEM[P+2].INT,W);MEM[R+1].INT:=MEM[R+1].INT+BESTHEIGHTPL;
BESTHEIGHTPL:=XOVERN(BESTHEIGHTPL,1000)*EQTB[3887+N].INT;
PAGESIZE:=PAGESIZE-BESTHEIGHTPL;MEM[R].HH.B0:=1;MEM[R+3].HH.RH:=Q;
MEM[R+3].HH.LH:=P;
IF Q=0 THEN INSPENALTIES:=INSPENALTIES-10000 ELSE IF MEM[Q].HH.B0=12
THEN INSPENALTIES:=INSPENALTIES+MEM[Q+1].INT;END;END;GOTO 80;END;
OTHERS:CONFUSION(774)END;
{941}IF PI<10000 THEN BEGIN{942}IF PAGESOFAR[1]<PAGESIZE THEN IF(
PAGESOFAR[3]<>0)OR(PAGESOFAR[4]<>0)OR(PAGESOFAR[5]<>0)THEN B:=0 ELSE B:=
BADNESS(PAGESIZE-PAGESOFAR[1],PAGESOFAR[2])ELSE IF PAGESOFAR[1]-PAGESIZE
>PAGESOFAR[6]THEN B:=1073741823 ELSE B:=BADNESS(PAGESOFAR[1]-PAGESIZE,
PAGESOFAR[6]);
IF B<=10000 THEN IF PI<=-10000 THEN B:=PI ELSE B:=B+PI+INSPENALTIES;
IF B<=LEASTPAGEBAD THEN BEGIN BESTPAGEBREA:=P;BESTSIZE:=PAGESIZE;
LEASTPAGEBAD:=B;R:=MEM[25000].HH.RH;
WHILE R<>25000 DO BEGIN MEM[R+2].HH.LH:=MEM[R+2].HH.RH;R:=MEM[R].HH.RH;
END;END;
IF(B=1073741823)OR(PI<=-10000)THEN{946}BEGIN{947}IF MEM[BESTPAGEBREA].HH
.B0=12 THEN BEGIN GEQWORDDEFIN(3884,MEM[BESTPAGEBREA+1].INT);
MEM[BESTPAGEBREA+1].INT:=10000;END ELSE GEQWORDDEFIN(3884,10000);
IF CURMARK[2]<>0 THEN BEGIN IF CURMARK[0]<>0 THEN DELETETOKENR(CURMARK[0
]);CURMARK[0]:=CURMARK[2];
MEM[CURMARK[0]].HH.LH:=MEM[CURMARK[0]].HH.LH+1;DELETETOKENR(CURMARK[1]);
CURMARK[1]:=0;END;{948}IF P=BESTPAGEBREA THEN BESTPAGEBREA:=0;
{949}IF EQTB[3158].HH.RH<>0 THEN BEGIN PRINTNL(780);BEGIN HELPPTR:=2;
HELPLINE[1]:=781;HELPLINE[0]:=782;END;BOX255ERROR;END;
{952}R:=MEM[25000].HH.RH;
WHILE R<>25000 DO BEGIN IF MEM[R+2].HH.LH<>0 THEN BEGIN N:=MEM[R].HH.B1;
IF EQTB[2903+N].HH.RH=0 THEN EQTB[2903+N].HH.RH:=NEWNULLBOX;
P:=EQTB[2903+N].HH.RH+5;WHILE MEM[P].HH.RH<>0 DO P:=MEM[P].HH.RH;
MEM[R+2].HH.RH:=P;END;R:=MEM[R].HH.RH;END;Q:=25004;MEM[Q].HH.RH:=0;
PREVP:=25002;P:=MEM[PREVP].HH.RH;
WHILE P<>BESTPAGEBREA DO BEGIN IF MEM[P].HH.B0=3 THEN{954}BEGIN R:=MEM[
25000].HH.RH;WHILE MEM[R].HH.B1<>MEM[P].HH.B1 DO R:=MEM[R].HH.RH;
IF MEM[R+2].HH.LH=0 THEN WAIT:=TRUE ELSE BEGIN WAIT:=FALSE;
S:=MEM[P+2].INT;MEM[MEM[R+2].HH.RH].HH.RH:=S;S:=MEM[R+2].HH.RH;
IF MEM[R+2].HH.LH=P THEN{955}BEGIN IF MEM[R].HH.B0=1 THEN IF(MEM[R+3].HH
.LH=P)AND(MEM[R+3].HH.RH<>0)THEN BEGIN WHILE MEM[S].HH.RH<>MEM[R+3].HH.
RH DO S:=MEM[S].HH.RH;MEM[P+2].INT:=PRUNEPAGETOP(MEM[R+3].HH.RH);
IF MEM[P+2].INT<>0 THEN BEGIN TEMPPTR:=VPACKAGE(MEM[P+2].INT,0,1,
1073741823);MEM[P+1].INT:=MEM[TEMPPTR+3].INT+MEM[TEMPPTR+2].INT;
FREENODE(TEMPPTR,7);END;MEM[S].HH.RH:=0;WAIT:=(MEM[P+2].INT<>0);END;
MEM[R+2].HH.LH:=0;N:=MEM[R].HH.B1;
TEMPPTR:=MEM[EQTB[2903+N].HH.RH+5].HH.RH;FREENODE(EQTB[2903+N].HH.RH,7);
EQTB[2903+N].HH.RH:=VPACKAGE(TEMPPTR,0,1,1073741823);
END ELSE BEGIN WHILE MEM[S].HH.RH<>0 DO S:=MEM[S].HH.RH;
MEM[R+2].HH.RH:=S;END;END;{956}MEM[PREVP].HH.RH:=MEM[P].HH.RH;
MEM[P].HH.RH:=0;IF WAIT THEN BEGIN MEM[Q].HH.RH:=P;Q:=P;
END ELSE FREENODE(P,3);P:=PREVP;
END ELSE IF MEM[P].HH.B0=4 THEN{950}BEGIN IF CURMARK[1]=0 THEN BEGIN
CURMARK[1]:=MEM[P+1].INT;MEM[CURMARK[1]].HH.LH:=MEM[CURMARK[1]].HH.LH+1;
END;IF CURMARK[2]<>0 THEN DELETETOKENR(CURMARK[2]);
CURMARK[2]:=MEM[P+1].INT;MEM[CURMARK[2]].HH.LH:=MEM[CURMARK[2]].HH.LH+1;
END;PREVP:=P;P:=MEM[PREVP].HH.RH;END;
{951}IF P<>0 THEN BEGIN IF MEM[25001].HH.RH=0 THEN IF NESTPTR=0 THEN
CURLIST.TAILFIELD:=PAGETAIL ELSE NEST[0].TAILFIELD:=PAGETAIL;
MEM[PAGETAIL].HH.RH:=MEM[25001].HH.RH;MEM[25001].HH.RH:=P;
MEM[PREVP].HH.RH:=0;END;SAVEVBADNESS:=EQTB[3875].INT;
EQTB[3875].INT:=10000;SAVEVFUZZ:=EQTB[4281].INT;
EQTB[4281].INT:=1073741823;
EQTB[3158].HH.RH:=VPACKAGE(MEM[25002].HH.RH,BESTSIZE,0,PAGEDEPTHMAX);
EQTB[3875].INT:=SAVEVBADNESS;EQTB[4281].INT:=SAVEVFUZZ;
IF LASTPAGEGLUE<>262143 THEN DELETEGLUERE(LASTPAGEGLUE);
{928}PAGECONTENTS:=0;PAGETAIL:=25002;MEM[25002].HH.RH:=0;
LASTPAGEGLUE:=262143;INSPENALTIES:=0;CURPAGEDEPTH:=0;PAGEDEPTHMAX:=0;;
IF Q<>25004 THEN BEGIN MEM[25002].HH.RH:=MEM[25004].HH.RH;PAGETAIL:=Q;
END;{953}R:=MEM[25000].HH.RH;WHILE R<>25000 DO BEGIN Q:=MEM[R].HH.RH;
FREENODE(R,4);R:=Q;END;MEM[25000].HH.RH:=25000;
IF(CURMARK[0]<>0)AND(CURMARK[1]=0)THEN BEGIN CURMARK[1]:=CURMARK[0];
MEM[CURMARK[0]].HH.LH:=MEM[CURMARK[0]].HH.LH+1;END;
IF EQTB[2898].HH.RH<>0 THEN IF DEADCYCLES>=EQTB[3885].INT THEN{958}BEGIN
PRINTNL(783);PRINTINT(EQTB[3885].INT);PRINT(784);BEGIN HELPPTR:=3;
HELPLINE[2]:=785;HELPLINE[1]:=786;HELPLINE[0]:=787;END;ERROR;
END ELSE{959}BEGIN OUTPUTACTIVE:=TRUE;DEADCYCLES:=DEADCYCLES+1;PUSHNEST;
CURLIST.MODEFIELD:=-1;CURLIST.AUXFIELD:=-65536000;
CURLIST.MLFIELD:=-LINE;BEGINTOKENLI(EQTB[2898].HH.RH,6);NEWSAVELEVEL(7);
SCANLEFTBRAC;GOTO 10;END;
{957}BEGIN IF MEM[25002].HH.RH<>0 THEN BEGIN IF MEM[25001].HH.RH=0 THEN
IF NESTPTR=0 THEN CURLIST.TAILFIELD:=PAGETAIL ELSE NEST[0].TAILFIELD:=
PAGETAIL ELSE MEM[PAGETAIL].HH.RH:=MEM[25001].HH.RH;
MEM[25001].HH.RH:=MEM[25002].HH.RH;MEM[25002].HH.RH:=0;PAGETAIL:=25002;
END;SHIPOUT(EQTB[3158].HH.RH);EQTB[3158].HH.RH:=0;GOTO 30;END;END;END;
IF(MEM[P].HH.B0<10)OR(MEM[P].HH.B0>11)THEN GOTO 80;
90:{940}IF MEM[P].HH.B0=11 THEN Q:=P ELSE BEGIN Q:=MEM[P+1].HH.LH;
PAGESOFAR[2+MEM[Q].HH.B0]:=PAGESOFAR[2+MEM[Q].HH.B0]+MEM[Q+2].INT;
PAGESOFAR[6]:=PAGESOFAR[6]+MEM[Q+3].INT;
IF(MEM[Q].HH.B1<>0)AND(MEM[Q+3].INT<>0)THEN BEGIN PRINTNL(775);
BEGIN HELPPTR:=4;HELPLINE[3]:=776;HELPLINE[2]:=760;HELPLINE[1]:=761;
HELPLINE[0]:=727;END;ERROR;R:=NEWSPEC(Q);MEM[R].HH.B1:=0;
DELETEGLUERE(Q);MEM[P+1].HH.LH:=R;END;END;
PAGESOFAR[1]:=PAGESOFAR[1]+CURPAGEDEPTH+MEM[Q+1].INT;CURPAGEDEPTH:=0;
80:{939}IF CURPAGEDEPTH>PAGEDEPTHMAX THEN BEGIN PAGESOFAR[1]:=PAGESOFAR[
1]+CURPAGEDEPTH-PAGEDEPTHMAX;CURPAGEDEPTH:=PAGEDEPTHMAX;END;;
{934}MEM[PAGETAIL].HH.RH:=P;PAGETAIL:=P;MEM[25001].HH.RH:=MEM[P].HH.RH;
MEM[P].HH.RH:=0;GOTO 30;31:{935}MEM[25001].HH.RH:=MEM[P].HH.RH;
MEM[P].HH.RH:=0;FLUSHNODELIS(P);30:;UNTIL MEM[25001].HH.RH=0;
{931}IF NESTPTR=0 THEN CURLIST.TAILFIELD:=25001 ELSE NEST[0].TAILFIELD:=
25001;10:END;{963}{967}PROCEDURE MISSINGFONT;BEGIN PRINTNL(792);
BEGIN HELPPTR:=4;HELPLINE[3]:=793;HELPLINE[2]:=794;HELPLINE[1]:=795;
HELPLINE[0]:=796;END;ERROR;END;{977}PROCEDURE APPSPACE;VAR P:HALFWORD;
Q:HALFWORD;F:INTERNALFONT;K:0..FONTMEMSIZE;
BEGIN IF(CURLIST.AUXFIELD>=2000)AND(EQTB[2380].HH.RH<>0)THEN Q:=
NEWPARAMGLUE(12)ELSE BEGIN IF EQTB[2379].HH.RH<>0 THEN P:=EQTB[2379].HH.
RH ELSE{976}BEGIN P:=FONTGLUE[EQTB[3159].HH.RH];
IF P=0 THEN BEGIN F:=EQTB[3159].HH.RH;P:=NEWSPEC(0);K:=PARAMBASE[F]+2;
MEM[P+1].INT:=FONTINFO[K].INT;MEM[P+2].INT:=FONTINFO[K+1].INT;
MEM[P+3].INT:=FONTINFO[K+2].INT;FONTGLUE[F]:=P;END;END;P:=NEWSPEC(P);
{978}IF CURLIST.AUXFIELD>=2000 THEN MEM[P+1].INT:=MEM[P+1].INT+FONTINFO[
7+PARAMBASE[EQTB[3159].HH.RH]].INT;
MEM[P+2].INT:=XNOVERD(MEM[P+2].INT,CURLIST.AUXFIELD,1000);
MEM[P+3].INT:=XNOVERD(MEM[P+3].INT,1000,CURLIST.AUXFIELD);Q:=NEWGLUE(P);
MEM[P].HH.RH:=0;END;MEM[CURLIST.TAILFIELD].HH.RH:=Q;
CURLIST.TAILFIELD:=Q;END;{981}PROCEDURE INSERTDOLLAR;BEGIN PRINTNL(797);
BEGIN HELPPTR:=2;HELPLINE[1]:=798;HELPLINE[0]:=799;END;BACKERROR;
CURCMD:=3;CURCHR:=36;CURTOK:=804;END;{983}PROCEDURE YOUCANT;
BEGIN PRINTNL(800);PRINTCMDCHR(CURCMD,CURCHR);PRINT(801);
PRINTMODE(CURLIST.MODEFIELD);END;{984}PROCEDURE REPORTILLEGA;
BEGIN YOUCANT;BEGIN HELPPTR:=4;HELPLINE[3]:=802;HELPLINE[2]:=803;
HELPLINE[1]:=804;HELPLINE[0]:=805;END;ERROR;END;
{985}FUNCTION PRIVILEGED:BOOLEAN;
BEGIN IF CURLIST.MODEFIELD>0 THEN PRIVILEGED:=TRUE ELSE BEGIN
REPORTILLEGA;PRIVILEGED:=FALSE;END;END;{989}FUNCTION ITSALLOVER:BOOLEAN;
LABEL 10;
BEGIN IF PRIVILEGED THEN BEGIN IF(25002=PAGETAIL)AND(CURLIST.HEADFIELD=
CURLIST.TAILFIELD)AND((DEADCYCLES=0)OR(DEADCYCLES>=100))THEN BEGIN IF
DEADCYCLES>0 THEN BEGIN PRINTNL(808);END;ITSALLOVER:=TRUE;GOTO 10;END;
BACKINPUT;BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNULLBOX;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD+1].INT:=EQTB[4275].INT;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(-10000);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;BUILDPAGE;END;
ITSALLOVER:=FALSE;10:END;{996}PROCEDURE APPENDGLUE;VAR S:SMALLNUMBER;
BEGIN S:=CURCHR;CASE S OF 0:CURVAL:=4;1:CURVAL:=8;2:CURVAL:=12;
3:CURVAL:=16;4:SCANGLUE(2);5:SCANGLUE(3);END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(CURVAL);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
IF S>=4 THEN BEGIN MEM[CURVAL].HH.RH:=MEM[CURVAL].HH.RH-1;
IF S>4 THEN MEM[CURLIST.TAILFIELD].HH.B1:=99;END;END;
{997}PROCEDURE APPENDKERN;VAR S:QUARTERWORD;BEGIN S:=CURCHR;
SCANDIMEN(S=99,FALSE,FALSE);
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(CURVAL);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B1:=S;END;{1000}PROCEDURE OFFSAVE;
VAR P:HALFWORD;BEGIN IF CURGROUP=0 THEN{1002}BEGIN PRINTNL(592);
PRINTCMDCHR(CURCMD,CURCHR);BEGIN HELPPTR:=1;HELPLINE[0]:=827;END;ERROR;
END ELSE BEGIN BACKINPUT;P:=GETAVAIL;MEM[25003].HH.RH:=P;PRINTNL(819);
{1001}CASE CURGROUP OF 12:BEGIN MEM[P].HH.LH:=6456;PRINTESC(332);END;
13:BEGIN MEM[P].HH.LH:=804;PRINTCHAR(36);END;
14:BEGIN MEM[P].HH.LH:=6457;MEM[P].HH.RH:=GETAVAIL;P:=MEM[P].HH.RH;
MEM[P].HH.LH:=3118;PRINTESC(826);END;OTHERS:BEGIN MEM[P].HH.LH:=637;
PRINTCHAR(125);END END;PRINT(820);BEGINTOKENLI(MEM[25003].HH.RH,4);
BEGIN HELPPTR:=5;HELPLINE[4]:=821;HELPLINE[3]:=822;HELPLINE[2]:=823;
HELPLINE[1]:=824;HELPLINE[0]:=825;END;ERROR;END;END;
{1005}PROCEDURE EXTRARIGHTBR;BEGIN PRINTNL(832);
CASE CURGROUP OF 12:PRINTESC(332);13:PRINTCHAR(36);14:PRINTESC(683);END;
BEGIN HELPPTR:=5;HELPLINE[4]:=833;HELPLINE[3]:=834;HELPLINE[2]:=835;
HELPLINE[1]:=836;HELPLINE[0]:=837;END;ERROR;ALIGNSTATE:=ALIGNSTATE+1;
END;{1011}PROCEDURE BOXEND;VAR P:HALFWORD;
BEGIN IF SAVESTACK[SAVEPTR+0].INT<1073741824 THEN{1012}BEGIN IF CURBOX<>
0 THEN BEGIN MEM[CURBOX+4].INT:=SAVESTACK[SAVEPTR+0].INT;
IF ABS(CURLIST.MODEFIELD)=1 THEN BEGIN APPENDTOVLIS(CURBOX);
IF CURLIST.MODEFIELD>0 THEN BUILDPAGE;
END ELSE BEGIN IF ABS(CURLIST.MODEFIELD)=94 THEN CURLIST.AUXFIELD:=1000
ELSE BEGIN P:=NEWNOAD;MEM[P].HH.B0:=15;MEM[P+1].HH.RH:=2;
MEM[P+1].HH.LH:=CURBOX;CURBOX:=P;END;
MEM[CURLIST.TAILFIELD].HH.RH:=CURBOX;CURLIST.TAILFIELD:=CURBOX;END;END;
END ELSE IF SAVESTACK[SAVEPTR+0].INT<1073742336 THEN{1013}IF SAVESTACK[
SAVEPTR+0].INT<1073742080 THEN EQDEFINE(-1073738921+SAVESTACK[SAVEPTR+0]
.INT,107,CURBOX)ELSE GEQDEFINE(-1073739177+SAVESTACK[SAVEPTR+0].INT,107,
CURBOX)ELSE IF CURBOX<>0 THEN IF SAVESTACK[SAVEPTR+0].INT>1073742336
THEN{1014}BEGIN{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
IF((CURCMD=27)AND(ABS(CURLIST.MODEFIELD)<>1))OR((CURCMD=28)AND(ABS(
CURLIST.MODEFIELD)=1))THEN BEGIN APPENDGLUE;
MEM[CURLIST.TAILFIELD].HH.B1:=SAVESTACK[SAVEPTR+0].INT-(1073742237);
MEM[CURLIST.TAILFIELD+1].HH.RH:=CURBOX;END ELSE BEGIN PRINTNL(853);
BEGIN HELPPTR:=3;HELPLINE[2]:=854;HELPLINE[1]:=855;HELPLINE[0]:=856;END;
ERROR;FLUSHNODELIS(CURBOX);END;END ELSE SHIPOUT(CURBOX);END;
{1015}PROCEDURE BEGINBOX;LABEL 10;VAR P:HALFWORD;K:HALFWORD;N:EIGHTBITS;
BEGIN CASE CURCHR OF 0:BEGIN SCANEIGHTBIT;
CURBOX:=EQTB[2903+CURVAL].HH.RH;EQTB[2903+CURVAL].HH.RH:=0;END;
1:BEGIN SCANEIGHTBIT;CURBOX:=COPYNODELIST(EQTB[2903+CURVAL].HH.RH);END;
2:{1016}BEGIN CURBOX:=0;
IF(CURLIST.MODEFIELD=1)AND(CURLIST.HEADFIELD=CURLIST.TAILFIELD)THEN{1017
}BEGIN YOUCANT;BEGIN HELPPTR:=2;HELPLINE[1]:=857;HELPLINE[0]:=858;END;
ERROR;END ELSE BEGIN IF NOT(CURLIST.TAILFIELD>25000)THEN IF(MEM[CURLIST.
TAILFIELD].HH.B0=0)OR(MEM[CURLIST.TAILFIELD].HH.B0=1)THEN BEGIN P:=
CURLIST.HEADFIELD;CURBOX:=CURLIST.TAILFIELD;
WHILE MEM[P].HH.RH<>CURLIST.TAILFIELD DO P:=MEM[P].HH.RH;
CURLIST.TAILFIELD:=P;MEM[P].HH.RH:=0;END;END;END;
3:{1018}BEGIN SCANEIGHTBIT;N:=CURVAL;
IF NOT SCANKEYWORD(649)THEN BEGIN PRINTNL(859);BEGIN HELPPTR:=2;
HELPLINE[1]:=860;HELPLINE[0]:=861;END;ERROR;END;
SCANDIMEN(FALSE,FALSE,FALSE);CURBOX:=VSPLIT(N,CURVAL);END;
OTHERS:{1019}BEGIN K:=CURCHR-4;SAVEPTR:=SAVEPTR+1;SCANSPEC;
IF K=94 THEN NEWSAVELEVEL(2)ELSE BEGIN IF K=1 THEN NEWSAVELEVEL(3)ELSE
BEGIN NEWSAVELEVEL(4);K:=1;END;
IF EQTB[3867].INT<>0 THEN EQWORDDEFINE(3867,0);
IF EQTB[4289].INT<>0 THEN EQWORDDEFINE(4289,0);
IF EQTB[2897].HH.RH<>0 THEN EQDEFINE(2897,106,0);END;PUSHNEST;
CURLIST.MODEFIELD:=-K;
IF K=1 THEN CURLIST.AUXFIELD:=-65536000 ELSE CURLIST.AUXFIELD:=1000;
GOTO 10;END END;BOXEND;10:END;{1020}PROCEDURE SCANBOX;
BEGIN{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
IF CURCMD=22 THEN BEGINBOX ELSE IF(SAVESTACK[SAVEPTR+0].INT>=1073742337)
AND((CURCMD=37)OR(CURCMD=36))THEN BEGIN CURBOX:=SCANRULESPEC;BOXEND;
END ELSE BEGIN PRINTNL(862);BEGIN HELPPTR:=3;HELPLINE[2]:=863;
HELPLINE[1]:=864;HELPLINE[0]:=865;END;BACKERROR;END;END;
{1022}PROCEDURE PACKAGE(C:SMALLNUMBER);VAR H:SCALED;F:INTERNALFONT;
P:HALFWORD;BEGIN UNSAVE;SAVEPTR:=SAVEPTR-3;
IF CURLIST.MODEFIELD=-94 THEN CURBOX:=HPACK(MEM[CURLIST.HEADFIELD].HH.RH
,SAVESTACK[SAVEPTR+2].INT,SAVESTACK[SAVEPTR+1].INT)ELSE BEGIN CURBOX:=
VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,SAVESTACK[SAVEPTR+2].INT,SAVESTACK
[SAVEPTR+1].INT,EQTB[4279].INT);IF C=4 THEN{1023}BEGIN H:=0;
P:=MEM[CURBOX+5].HH.RH;
IF P<>0 THEN IF MEM[P].HH.B0<=2 THEN H:=MEM[P+3].INT;
MEM[CURBOX+2].INT:=MEM[CURBOX+2].INT-H+MEM[CURBOX+3].INT;
MEM[CURBOX+3].INT:=H;END;END;POPNEST;BOXEND;END;
{1028}PROCEDURE NEWGRAF(INDENTED:BOOLEAN);BEGIN CURLIST.ALREADYFIELD:=0;
IF(CURLIST.MODEFIELD=1)OR(CURLIST.HEADFIELD<>CURLIST.TAILFIELD)THEN
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(2);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;PUSHNEST;
CURLIST.MODEFIELD:=94;CURLIST.AUXFIELD:=1000;
IF INDENTED THEN BEGIN CURLIST.TAILFIELD:=NEWNULLBOX;
MEM[CURLIST.HEADFIELD].HH.RH:=CURLIST.TAILFIELD;
MEM[CURLIST.TAILFIELD+1].INT:=EQTB[4271].INT;END;
IF EQTB[2899].HH.RH<>0 THEN BEGINTOKENLI(EQTB[2899].HH.RH,7);
IF NESTPTR=1 THEN BUILDPAGE;END;{1030}PROCEDURE INDENTINHMOD;
BEGIN IF CURCHR>0 THEN BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=
NEWNULLBOX;CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD+1].INT:=EQTB[4271].INT;END;END;
{1032}PROCEDURE ENDGRAF;
BEGIN IF CURLIST.MODEFIELD=94 THEN BEGIN IF CURLIST.HEADFIELD=CURLIST.
TAILFIELD THEN POPNEST ELSE LINEBREAK(EQTB[3854].INT);
IF EQTB[3867].INT<>0 THEN EQWORDDEFINE(3867,0);
IF EQTB[4289].INT<>0 THEN EQWORDDEFINE(4289,0);
IF EQTB[2897].HH.RH<>0 THEN EQDEFINE(2897,106,0);ERRORCOUNT:=0;END;END;
{1035}PROCEDURE BEGININSERTO;
BEGIN IF CURLIST.MODEFIELD<-1 THEN REPORTILLEGA ELSE BEGIN IF CURCMD=39
THEN CURVAL:=255 ELSE BEGIN SCANEIGHTBIT;
IF CURVAL=255 THEN BEGIN PRINTNL(868);BEGIN HELPPTR:=1;HELPLINE[0]:=869;
END;ERROR;CURVAL:=0;END;END;SAVESTACK[SAVEPTR+0].INT:=CURVAL;
SAVEPTR:=SAVEPTR+1;NEWSAVELEVEL(10);SCANLEFTBRAC;PUSHNEST;
CURLIST.MODEFIELD:=-1;CURLIST.AUXFIELD:=-65536000;END;END;
{1037}PROCEDURE MAKEMARK;VAR P:HALFWORD;
BEGIN IF CURLIST.MODEFIELD<-1 THEN REPORTILLEGA ELSE BEGIN P:=SCANTOKS(
FALSE,TRUE);P:=GETNODE(2);MEM[P].HH.B0:=4;MEM[P].HH.B1:=0;
MEM[P+1].INT:=DEFREF;MEM[CURLIST.TAILFIELD].HH.RH:=P;
CURLIST.TAILFIELD:=P;END;END;{1039}PROCEDURE CHANGEAUX;VAR C:HALFWORD;
BEGIN IF CURCHR<>ABS(CURLIST.MODEFIELD)THEN REPORTILLEGA ELSE BEGIN C:=
CURCHR;SCANOPTIONAL;IF C=1 THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
CURLIST.AUXFIELD:=CURVAL;END ELSE BEGIN SCANINT;
IF(CURVAL<=0)OR(CURVAL>65536)THEN BEGIN PRINTNL(870);BEGIN HELPPTR:=1;
HELPLINE[0]:=871;END;INTERROR(CURVAL);END ELSE CURLIST.AUXFIELD:=CURVAL;
END;END;END;{1041}PROCEDURE APPENDPENALT;BEGIN SCANINT;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(CURVAL);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
IF CURLIST.MODEFIELD=1 THEN BUILDPAGE;END;{1043}PROCEDURE DELETESKIP;
VAR P:HALFWORD;
BEGIN IF(CURLIST.MODEFIELD=1)AND(CURLIST.TAILFIELD=CURLIST.HEADFIELD)
THEN{1044}BEGIN YOUCANT;BEGIN HELPPTR:=2;HELPLINE[1]:=857;
HELPLINE[0]:=872;END;ERROR;
END ELSE BEGIN IF NOT(CURLIST.TAILFIELD>25000)THEN IF MEM[CURLIST.
TAILFIELD].HH.B0=10 THEN BEGIN P:=CURLIST.HEADFIELD;
WHILE MEM[P].HH.RH<>CURLIST.TAILFIELD DO P:=MEM[P].HH.RH;
MEM[P].HH.RH:=0;FLUSHNODELIS(CURLIST.TAILFIELD);CURLIST.TAILFIELD:=P;
END;END;END;{1046}PROCEDURE UNPACKAGE;VAR P:HALFWORD;BEGIN SCANEIGHTBIT;
P:=EQTB[2903+CURVAL].HH.RH;
IF P<>0 THEN IF((ABS(CURLIST.MODEFIELD)=1)AND(MEM[P].HH.B0=1))OR((ABS(
CURLIST.MODEFIELD)=94)AND(MEM[P].HH.B0=0))THEN BEGIN MEM[CURLIST.
TAILFIELD].HH.RH:=MEM[P+5].HH.RH;EQTB[2903+CURVAL].HH.RH:=0;
FREENODE(P,7);
WHILE MEM[CURLIST.TAILFIELD].HH.RH<>0 DO CURLIST.TAILFIELD:=MEM[CURLIST.
TAILFIELD].HH.RH;END ELSE BEGIN PRINTNL(873);BEGIN HELPPTR:=2;
HELPLINE[1]:=874;HELPLINE[0]:=875;END;ERROR;END;END;
{1049}PROCEDURE APPENDITALIC;VAR F:INTERNALFONT;
BEGIN IF(CURLIST.TAILFIELD>25000)AND(CURLIST.TAILFIELD<>CURLIST.
HEADFIELD)THEN BEGIN F:=MEM[CURLIST.TAILFIELD].HH.B0;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(FONTINFO[ITALICBASE[F]+
FONTINFO[CHARBASE[F]+MEM[CURLIST.TAILFIELD].HH.B1].QQQQ.B2 DIV 4].INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;END;END;
{1053}PROCEDURE APPENDDISCRE;
BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWDISC;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
IF CURCHR=1 THEN MEM[CURLIST.TAILFIELD+1].HH.LH:=NEWCHARACTER(EQTB[3159]
.HH.RH,45)ELSE BEGIN SAVEPTR:=SAVEPTR+1;SAVESTACK[SAVEPTR-1].INT:=0;
SCANLEFTBRAC;NEWSAVELEVEL(9);PUSHNEST;CURLIST.MODEFIELD:=-94;END;END;
{1055}PROCEDURE BUILDDISCRET;LABEL 30,10;VAR P,Q:HALFWORD;N:INTEGER;
BEGIN UNSAVE;{1057}Q:=CURLIST.HEADFIELD;P:=MEM[Q].HH.RH;N:=0;
WHILE P<>0 DO BEGIN IF NOT(P>25000)THEN IF(MEM[P].HH.B0<>11)AND(MEM[P].
HH.B0<>6)THEN BEGIN PRINTNL(882);BEGIN HELPPTR:=1;HELPLINE[0]:=883;END;
ERROR;BEGINDIAGNOS;PRINTNL(884);SHOWBOX(P);ENDDIAGNOSTI(TRUE);
FLUSHNODELIS(P);MEM[Q].HH.RH:=0;GOTO 30;END;Q:=P;P:=MEM[Q].HH.RH;N:=N+1;
END;30:;P:=MEM[CURLIST.HEADFIELD].HH.RH;POPNEST;
CASE SAVESTACK[SAVEPTR-1].INT OF 0:MEM[CURLIST.TAILFIELD+1].HH.LH:=P;
1:MEM[CURLIST.TAILFIELD+1].HH.RH:=P;
2:{1056}BEGIN IF(N>0)AND(ABS(CURLIST.MODEFIELD)=187)THEN BEGIN PRINTNL(
876);BEGIN HELPPTR:=2;HELPLINE[1]:=877;HELPLINE[0]:=878;END;
FLUSHNODELIS(P);N:=0;ERROR;END ELSE MEM[CURLIST.TAILFIELD].HH.RH:=P;
IF N<128 THEN MEM[CURLIST.TAILFIELD].HH.B1:=N ELSE BEGIN PRINTNL(879);
BEGIN HELPPTR:=2;HELPLINE[1]:=880;HELPLINE[0]:=881;END;ERROR;END;
IF N>0 THEN CURLIST.TAILFIELD:=Q;SAVEPTR:=SAVEPTR-1;GOTO 10;END;END;
SAVESTACK[SAVEPTR-1].INT:=SAVESTACK[SAVEPTR-1].INT+1;SCANLEFTBRAC;
NEWSAVELEVEL(9);PUSHNEST;CURLIST.MODEFIELD:=-94;10:END;
{1059}PROCEDURE INSTHE;BEGIN PRINTNL(885);BEGIN HELPPTR:=3;
HELPLINE[2]:=886;HELPLINE[1]:=887;HELPLINE[0]:=888;END;BACKERROR;
MEM[25012].HH.RH:=THETOKS(FALSE);BEGINTOKENLI(MEM[25003].HH.RH,4);END;
{1062}PROCEDURE MAKEACCENT;VAR S,T:REAL;P,Q:HALFWORD;F:INTERNALFONT;
A,H,X,W,DELTA:SCALED;I:FOURQUARTERS;BEGIN SCANCHARNUM;
F:=EQTB[3159].HH.RH;P:=NEWCHARACTER(F,CURVAL);
IF P<>0 THEN BEGIN X:=FONTINFO[5+PARAMBASE[F]].INT;
S:=FONTINFO[1+PARAMBASE[F]].INT/65536.0;
A:=FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ.B0].INT
;DOASSIGNMENT;{1063}Q:=0;F:=EQTB[3159].HH.RH;
IF(CURCMD=11)OR(CURCMD=12)THEN Q:=NEWCHARACTER(F,CURCHR)ELSE IF CURCMD=
16 THEN BEGIN SCANCHARNUM;Q:=NEWCHARACTER(F,CURVAL);END ELSE BACKINPUT;
IF Q<>0 THEN{1064}BEGIN T:=FONTINFO[1+PARAMBASE[F]].INT/65536.0;
I:=FONTINFO[CHARBASE[F]+MEM[Q].HH.B1].QQQQ;
W:=FONTINFO[WIDTHBASE[F]+I.B0].INT;
H:=FONTINFO[HEIGHTBASE[F]+I.B1 DIV 16].INT;
IF H<>X THEN BEGIN P:=HPACK(P,0,1);MEM[P+4].INT:=X-H;END;
DELTA:=ROUND((W-A)/2+H*T-X*S);
MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(DELTA);
MEM[MEM[CURLIST.TAILFIELD].HH.RH].HH.RH:=P;
MEM[P].HH.RH:=NEWKERN(-A-DELTA);CURLIST.TAILFIELD:=MEM[P].HH.RH;P:=Q;
END;MEM[CURLIST.TAILFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;END;END;
{1066}PROCEDURE ALIGNERROR;
BEGIN IF ABS(ALIGNSTATE)>2 THEN{1067}BEGIN PRINTNL(893);
IF CURTOK=1062 THEN BEGIN BEGIN HELPPTR:=6;HELPLINE[5]:=894;
HELPLINE[4]:=895;HELPLINE[3]:=896;HELPLINE[2]:=897;HELPLINE[1]:=898;
HELPLINE[0]:=899;END;END ELSE BEGIN BEGIN HELPPTR:=5;HELPLINE[4]:=894;
HELPLINE[3]:=900;HELPLINE[2]:=897;HELPLINE[1]:=898;HELPLINE[0]:=899;END;
END;ERROR;END ELSE BEGIN BACKINPUT;
IF ALIGNSTATE<0 THEN BEGIN PRINTNL(469);ALIGNSTATE:=ALIGNSTATE+1;
CURTOK:=379;END ELSE BEGIN PRINTNL(889);ALIGNSTATE:=ALIGNSTATE-1;
CURTOK:=637;END;BEGIN HELPPTR:=3;HELPLINE[2]:=890;HELPLINE[1]:=891;
HELPLINE[0]:=892;END;INSERROR;END;END;{1068}PROCEDURE NOALIGNERROR;
BEGIN PRINTNL(901);BEGIN HELPPTR:=2;HELPLINE[1]:=902;HELPLINE[0]:=903;
END;ERROR;END;PROCEDURE OMITERROR;BEGIN PRINTNL(904);BEGIN HELPPTR:=2;
HELPLINE[1]:=905;HELPLINE[0]:=903;END;ERROR;END;{1071}PROCEDURE DOENDV;
BEGIN IF CURGROUP=5 THEN BEGIN ENDGRAF;IF FINCOL THEN FINROW;
END ELSE OFFSAVE;END;{1075}PROCEDURE CSERROR;BEGIN PRINTNL(908);
BEGIN HELPPTR:=1;HELPLINE[0]:=909;END;ERROR;END;
{1077}PROCEDURE INITMATH;LABEL 21,40,45,30;VAR W:SCALED;L:SCALED;
S:SCALED;P:HALFWORD;Q:HALFWORD;F:INTERNALFONT;N:INTEGER;V:SCALED;
D:SCALED;BEGIN GETTOKEN;
IF(CURCMD=3)AND(CURLIST.MODEFIELD>0)THEN{1084}BEGIN IF CURLIST.HEADFIELD
=CURLIST.TAILFIELD THEN BEGIN POPNEST;W:=-1073741823;
END ELSE BEGIN LINEBREAK(EQTB[3855].INT);
{1085}V:=MEM[JUSTBOX+4].INT+2*FONTINFO[6+PARAMBASE[EQTB[3159].HH.RH]].
INT;W:=-1073741823;P:=MEM[JUSTBOX+5].HH.RH;
WHILE P<>0 DO BEGIN{1086}21:IF(P>25000)THEN BEGIN F:=MEM[P].HH.B0;
D:=FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ.B0].INT
;GOTO 40;END;CASE MEM[P].HH.B0 OF 0,1,2:BEGIN D:=MEM[P+1].INT;GOTO 40;
END;6:{606}BEGIN MEM[25012]:=MEM[P+1];MEM[25012].HH.RH:=MEM[P].HH.RH;
P:=25012;GOTO 21;END;11,9:D:=MEM[P+1].INT;
10:{1087}BEGIN Q:=MEM[P+1].HH.LH;D:=MEM[Q+1].INT;
IF MEM[JUSTBOX+5].HH.B0=1 THEN BEGIN IF(MEM[JUSTBOX+5].HH.B1=MEM[Q].HH.
B0)AND(MEM[Q+2].INT<>0)THEN V:=1073741823;
END ELSE IF MEM[JUSTBOX+5].HH.B0=2 THEN BEGIN IF(MEM[JUSTBOX+5].HH.B1=
MEM[Q].HH.B1)AND(MEM[Q+3].INT<>0)THEN V:=1073741823;END;
IF MEM[P].HH.B1>=100 THEN GOTO 40;END;8:{1281}D:=0;OTHERS:D:=0 END;
IF V<1073741823 THEN V:=V+D;GOTO 45;
40:IF V<1073741823 THEN BEGIN V:=V+D;W:=V;END ELSE BEGIN W:=1073741823;
GOTO 30;END;45:P:=MEM[P].HH.RH;END;30:;END;
{1088}IF EQTB[2897].HH.RH=0 THEN IF(EQTB[4289].INT<>0)AND(((EQTB[3886].
INT>=0)AND(CURLIST.ALREADYFIELD+2>EQTB[3886].INT))OR(CURLIST.
ALREADYFIELD+1<-EQTB[3886].INT))THEN BEGIN L:=EQTB[4275].INT-ABS(EQTB[
4289].INT);IF EQTB[4289].INT>0 THEN S:=EQTB[4289].INT ELSE S:=0;
END ELSE BEGIN L:=EQTB[4275].INT;S:=0;
END ELSE BEGIN N:=MEM[EQTB[2897].HH.RH].HH.LH;
IF CURLIST.ALREADYFIELD+2>=N THEN P:=EQTB[2897].HH.RH+2*N ELSE P:=EQTB[
2897].HH.RH+2*(CURLIST.ALREADYFIELD+2);S:=MEM[P-1].INT;L:=MEM[P].INT;
END;PUSHNEST;CURLIST.MODEFIELD:=187;CURLIST.AUXFIELD:=0;
NEWSAVELEVEL(13);EQDEFINE(3208,108,1);EQWORDDEFINE(4285,W);
EQWORDDEFINE(4286,L);EQWORDDEFINE(4287,S);IF NESTPTR=1 THEN BUILDPAGE;
IF EQTB[2901].HH.RH<>0 THEN BEGINTOKENLI(EQTB[2901].HH.RH,9);
END ELSE BEGIN BACKINPUT;{1078}BEGIN PUSHNEST;CURLIST.MODEFIELD:=-187;
CURLIST.AUXFIELD:=0;NEWSAVELEVEL(13);EQDEFINE(3208,108,1);
IF EQTB[2900].HH.RH<>0 THEN BEGINTOKENLI(EQTB[2900].HH.RH,8);END;END;
END;{1081}PROCEDURE STARTEQNO;
BEGIN IF CURGROUP=13 THEN BEGIN SAVESTACK[SAVEPTR+0].INT:=CURCHR;
SAVEPTR:=SAVEPTR+1;{1078}BEGIN PUSHNEST;CURLIST.MODEFIELD:=-187;
CURLIST.AUXFIELD:=0;NEWSAVELEVEL(13);EQDEFINE(3208,108,1);
IF EQTB[2900].HH.RH<>0 THEN BEGINTOKENLI(EQTB[2900].HH.RH,8);END;
END ELSE OFFSAVE;END;{1090}PROCEDURE SCANMATH(P:HALFWORD);LABEL 10;
VAR C:INTEGER;BEGIN{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
CASE CURCMD OF 11,12:C:=EQTB[3337+CURCHR].HH.RH;16:BEGIN SCANCHARNUM;
C:=CURVAL+28672;END;17:BEGIN SCANFIFTEENB;C:=CURVAL;END;18:C:=CURCHR;
15:BEGIN SCANTWENTYSE;C:=CURVAL DIV 4096;END;
OTHERS:{1091}BEGIN BACKINPUT;SCANLEFTBRAC;SAVESTACK[SAVEPTR+0].INT:=P;
SAVEPTR:=SAVEPTR+1;NEWSAVELEVEL(8);PUSHNEST;CURLIST.AUXFIELD:=0;GOTO 10;
END END;MEM[P].HH.RH:=1;MEM[P].HH.B1:=C MOD 256;
IF C>=28672 THEN MEM[P].HH.B0:=EQTB[3208].HH.RH ELSE MEM[P].HH.B0:=(C
DIV 256)MOD 16;10:END;{1093}PROCEDURE SETMATHCHAR(C:INTEGER);
VAR P:HALFWORD;BEGIN P:=NEWNOAD;MEM[P+1].HH.RH:=1;
MEM[P+1].HH.B1:=C MOD 256;
IF C>=28672 THEN BEGIN MEM[P+1].HH.B0:=EQTB[3208].HH.RH;
MEM[P].HH.B0:=15;END ELSE BEGIN MEM[P+1].HH.B0:=(C DIV 256)MOD 16;
MEM[P].HH.B0:=15+(C DIV 4096);END;MEM[CURLIST.TAILFIELD].HH.RH:=P;
CURLIST.TAILFIELD:=P;END;{1097}PROCEDURE MATHLIMITSWI;LABEL 10;
BEGIN IF CURLIST.HEADFIELD<>CURLIST.TAILFIELD THEN IF MEM[CURLIST.
TAILFIELD].HH.B0=16 THEN BEGIN MEM[CURLIST.TAILFIELD].HH.B1:=1-MEM[
CURLIST.TAILFIELD].HH.B1;GOTO 10;END;PRINTNL(912);BEGIN HELPPTR:=1;
HELPLINE[0]:=913;END;10:END;{1098}PROCEDURE SCANDELIMITE(P:HALFWORD;
R:BOOLEAN);BEGIN IF R THEN SCANTWENTYSE ELSE BEGIN{376}REPEAT GETXTOKEN;
UNTIL CURCMD<>10;CASE CURCMD OF 11,12:CURVAL:=EQTB[4143+CURCHR].INT;
15:SCANTWENTYSE;OTHERS:CURVAL:=-1 END;END;
IF CURVAL<0 THEN{1099}BEGIN PRINTNL(914);BEGIN HELPPTR:=6;
HELPLINE[5]:=915;HELPLINE[4]:=916;HELPLINE[3]:=917;HELPLINE[2]:=918;
HELPLINE[1]:=919;HELPLINE[0]:=920;END;BACKERROR;CURVAL:=0;END;
MEM[P].QQQQ.B0:=(CURVAL DIV 1048576)MOD 16;
MEM[P].QQQQ.B1:=(CURVAL DIV 4096)MOD 256;
MEM[P].QQQQ.B2:=(CURVAL DIV 256)MOD 16;MEM[P].QQQQ.B3:=CURVAL MOD 256;
END;{1101}PROCEDURE MATHRADICAL;
BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=GETNODE(5);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=23;MEM[CURLIST.TAILFIELD].HH.B1:=0;
MEM[CURLIST.TAILFIELD+1].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+3].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+2].HH:=EMPTYFIELD;
SCANDELIMITE(CURLIST.TAILFIELD+4,TRUE);SCANMATH(CURLIST.TAILFIELD+1);
END;{1103}PROCEDURE MATHAC;
BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=GETNODE(5);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=27;MEM[CURLIST.TAILFIELD].HH.B1:=0;
MEM[CURLIST.TAILFIELD+1].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+3].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+2].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+4].HH.RH:=1;SCANFIFTEENB;
MEM[CURLIST.TAILFIELD+4].HH.B1:=CURVAL MOD 256;
IF CURVAL>=28672 THEN MEM[CURLIST.TAILFIELD+4].HH.B0:=EQTB[3208].HH.RH
ELSE MEM[CURLIST.TAILFIELD+4].HH.B0:=(CURVAL DIV 256)MOD 16;
SCANMATH(CURLIST.TAILFIELD+1);END;{1109}PROCEDURE MATHNONSCRIP;
BEGIN{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
IF(CURCMD>31)OR(CURCMD<27)THEN BEGIN PRINTNL(921);BEGIN HELPPTR:=2;
HELPLINE[1]:=922;HELPLINE[0]:=923;END;BACKERROR;
END ELSE BEGIN BACKINPUT;BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(0);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B1:=98;END;END;{1111}PROCEDURE SUBSUP;
VAR T:SMALLNUMBER;P:HALFWORD;BEGIN T:=0;P:=0;
IF CURLIST.TAILFIELD<>CURLIST.HEADFIELD THEN IF(MEM[CURLIST.TAILFIELD].
HH.B0>=15)AND(MEM[CURLIST.TAILFIELD].HH.B0<29)THEN BEGIN P:=CURLIST.
TAILFIELD+2+CURCMD-7;T:=MEM[P].HH.RH;END;
IF(P=0)OR(T<>0)THEN{1112}BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=
NEWNOAD;CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=15;P:=CURLIST.TAILFIELD+2+CURCMD-7;
IF T<>0 THEN BEGIN IF CURCMD=7 THEN BEGIN PRINTNL(924);BEGIN HELPPTR:=1;
HELPLINE[0]:=925;END;END ELSE BEGIN PRINTNL(926);BEGIN HELPPTR:=1;
HELPLINE[0]:=927;END;END;ERROR;END;END;SCANMATH(P);END;
{1116}PROCEDURE MATHFRACTION;VAR C:SMALLNUMBER;BEGIN C:=CURCHR;
IF CURLIST.AUXFIELD<>0 THEN{1118}BEGIN IF C MOD 3=0 THEN SCANDIMEN(FALSE
,FALSE,FALSE);IF C>=3 THEN BEGIN SCANDELIMITE(25012,FALSE);
SCANDELIMITE(25012,FALSE);END;PRINTNL(934);BEGIN HELPPTR:=3;
HELPLINE[2]:=935;HELPLINE[1]:=936;HELPLINE[0]:=937;END;ERROR;
END ELSE BEGIN CURLIST.AUXFIELD:=GETNODE(6);
MEM[CURLIST.AUXFIELD].HH.B0:=24;MEM[CURLIST.AUXFIELD].HH.B1:=0;
MEM[CURLIST.AUXFIELD+2].HH.RH:=3;
MEM[CURLIST.AUXFIELD+2].HH.LH:=MEM[CURLIST.HEADFIELD].HH.RH;
MEM[CURLIST.AUXFIELD+3].HH:=EMPTYFIELD;
MEM[CURLIST.AUXFIELD+4].QQQQ:=NULLDELIMITE;
MEM[CURLIST.AUXFIELD+5].QQQQ:=NULLDELIMITE;
MEM[CURLIST.HEADFIELD].HH.RH:=0;CURLIST.TAILFIELD:=CURLIST.HEADFIELD;
{1117}CASE C MOD 3 OF 0:BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
MEM[CURLIST.AUXFIELD+1].INT:=CURVAL;END;
1:MEM[CURLIST.AUXFIELD+1].INT:=1073741824;
2:MEM[CURLIST.AUXFIELD+1].INT:=0;END;
IF C>=3 THEN BEGIN SCANDELIMITE(CURLIST.AUXFIELD+4,FALSE);
SCANDELIMITE(CURLIST.AUXFIELD+5,FALSE);END;END;END;
{1119}FUNCTION FINMLIST(P:HALFWORD):HALFWORD;VAR Q:HALFWORD;
BEGIN IF CURLIST.AUXFIELD<>0 THEN{1120}BEGIN MEM[CURLIST.AUXFIELD+3].HH.
RH:=3;MEM[CURLIST.AUXFIELD+3].HH.LH:=MEM[CURLIST.HEADFIELD].HH.RH;
IF P=0 THEN Q:=CURLIST.AUXFIELD ELSE BEGIN Q:=MEM[CURLIST.AUXFIELD+2].HH
.LH;IF MEM[Q].HH.B0<>29 THEN CONFUSION(683);
MEM[CURLIST.AUXFIELD+2].HH.LH:=MEM[Q].HH.RH;
MEM[Q].HH.RH:=CURLIST.AUXFIELD;MEM[CURLIST.AUXFIELD].HH.RH:=P;END;
END ELSE BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=P;
Q:=MEM[CURLIST.HEADFIELD].HH.RH;END;POPNEST;FINMLIST:=Q;END;
{1125}PROCEDURE MATHLEFTRIGH;VAR T:SMALLNUMBER;P:HALFWORD;
BEGIN T:=CURCHR;
IF(T=30)AND(CURGROUP<>14)THEN{1126}BEGIN IF CURGROUP=13 THEN BEGIN
SCANDELIMITE(25012,FALSE);PRINTNL(938);BEGIN HELPPTR:=1;
HELPLINE[0]:=939;END;ERROR;END ELSE OFFSAVE;END ELSE BEGIN P:=NEWNOAD;
MEM[P].HH.B0:=T;SCANDELIMITE(P+1,FALSE);IF T=29 THEN BEGIN PUSHNEST;
NEWSAVELEVEL(14);MEM[CURLIST.HEADFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;
END ELSE BEGIN P:=FINMLIST(P);UNSAVE;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD+1].HH.RH:=3;MEM[CURLIST.TAILFIELD+1].HH.LH:=P;END;
END;END;{1128}PROCEDURE FINMATH;VAR L:BOOLEAN;DANGER:BOOLEAN;M:INTEGER;
P:HALFWORD;A:HALFWORD;{1132}B:HALFWORD;W:SCALED;Z:SCALED;E:SCALED;
Q:SCALED;D:SCALED;S:SCALED;G1,G2:SMALLNUMBER;R:HALFWORD;
BEGIN DANGER:=FALSE;
{1129}IF(FONTPARAMS[EQTB[3162].HH.RH]<22)OR(FONTPARAMS[EQTB[3178].HH.RH]
<22)OR(FONTPARAMS[EQTB[3194].HH.RH]<22)THEN BEGIN PRINTNL(940);
BEGIN HELPPTR:=3;HELPLINE[2]:=941;HELPLINE[1]:=942;HELPLINE[0]:=943;END;
ERROR;FLUSHMATH;DANGER:=TRUE;
END ELSE IF(FONTPARAMS[EQTB[3163].HH.RH]<13)OR(FONTPARAMS[EQTB[3179].HH.
RH]<13)OR(FONTPARAMS[EQTB[3195].HH.RH]<13)THEN BEGIN PRINTNL(944);
BEGIN HELPPTR:=3;HELPLINE[2]:=945;HELPLINE[1]:=946;HELPLINE[0]:=947;END;
ERROR;FLUSHMATH;DANGER:=TRUE;END;M:=CURLIST.MODEFIELD;L:=FALSE;
P:=FINMLIST(0);IF CURLIST.MODEFIELD=-M THEN BEGIN CURMLIST:=P;
CURSTYLE:=2;MLISTPENALTI:=FALSE;MLISTTOHLIST;
A:=HPACK(MEM[25003].HH.RH,0,1);UNSAVE;SAVEPTR:=SAVEPTR-1;
IF SAVESTACK[SAVEPTR+0].INT=1 THEN L:=TRUE;IF DANGER THEN FLUSHMATH;
M:=CURLIST.MODEFIELD;P:=FINMLIST(0);END ELSE A:=0;
IF M<0 THEN{1130}BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWMATH(EQTB[
4272].INT,0);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
CURMLIST:=P;CURSTYLE:=2;MLISTPENALTI:=TRUE;MLISTTOHLIST;
MEM[CURLIST.TAILFIELD].HH.RH:=MEM[25003].HH.RH;
WHILE MEM[CURLIST.TAILFIELD].HH.RH<>0 DO CURLIST.TAILFIELD:=MEM[CURLIST.
TAILFIELD].HH.RH;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWMATH(EQTB[4272].INT,1);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
CURLIST.AUXFIELD:=1000;UNSAVE;END ELSE BEGIN{1131}BEGIN GETXTOKEN;
IF CURCMD<>3 THEN BEGIN PRINTNL(948);BEGIN HELPPTR:=2;HELPLINE[1]:=949;
HELPLINE[0]:=950;END;BACKERROR;END;END;{1133}CURMLIST:=P;CURSTYLE:=0;
MLISTPENALTI:=FALSE;MLISTTOHLIST;P:=MEM[25003].HH.RH;B:=HPACK(P,0,1);
W:=MEM[B+1].INT;Z:=EQTB[4286].INT;S:=EQTB[4287].INT;
IF A=0 THEN BEGIN E:=0;Q:=0;END ELSE BEGIN E:=MEM[A+1].INT;
Q:=E+FONTINFO[6+PARAMBASE[EQTB[3162].HH.RH]].INT;END;
IF W+Q>Z THEN{1135}BEGIN IF(E<>0)AND((W-TOTALSHRINK[0]+Q<=Z)OR(
TOTALSHRINK[1]<>0)OR(TOTALSHRINK[2]<>0)OR(TOTALSHRINK[3]<>0))THEN BEGIN
FREENODE(B,7);B:=HPACK(P,Z-Q,0);END ELSE BEGIN E:=0;
IF W>Z THEN BEGIN FREENODE(B,7);B:=HPACK(P,Z,0);END;END;W:=MEM[B+1].INT;
END;{1136}D:=HALF(Z-W);IF(E>0)AND(D<2*E)THEN BEGIN D:=HALF(Z-W-E);
IF P<>0 THEN IF MEM[P].HH.B0=10 THEN D:=0;END;
{1137}BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[3859].INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
IF(D+S<=EQTB[4285].INT)OR L THEN BEGIN G1:=3;G2:=3;END ELSE BEGIN G1:=4;
G2:=5;END;IF L AND(E=0)THEN BEGIN MEM[A+4].INT:=S;APPENDTOVLIS(A);
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(10000);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
END ELSE BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(G1);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
{1138}IF E<>0 THEN BEGIN R:=NEWKERN(Z-W-E-D);
IF L THEN BEGIN MEM[A].HH.RH:=R;MEM[R].HH.RH:=B;B:=A;D:=0;
END ELSE BEGIN MEM[B].HH.RH:=R;MEM[R].HH.RH:=A;END;B:=HPACK(B,0,1);END;
MEM[B+4].INT:=S+D;APPENDTOVLIS(B);
{1139}IF(A<>0)AND(E=0)AND NOT L THEN BEGIN BEGIN MEM[CURLIST.TAILFIELD].
HH.RH:=NEWPENALTY(10000);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[A+4].INT:=S+Z-MEM[A+1].INT;APPENDTOVLIS(A);
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[3860].INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
END ELSE BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[3860]
.INT);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(G2);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;END;RESUMEAFTERD;
END;END;{1134}PROCEDURE RESUMEAFTERD;
BEGIN IF CURGROUP<>13 THEN CONFUSION(951);UNSAVE;
CURLIST.ALREADYFIELD:=CURLIST.ALREADYFIELD+3;PUSHNEST;
CURLIST.MODEFIELD:=94;CURLIST.AUXFIELD:=1000;{408}BEGIN GETTOKEN;
IF CURCMD<>10 THEN BACKINPUT;END;IF NESTPTR=1 THEN BUILDPAGE;END;
{1145}{1149}PROCEDURE GETRTOKEN;LABEL 20;BEGIN 20:GETTOKEN;
IF(CSPTR=0)OR(CSPTR>2358)THEN BEGIN PRINTNL(965);BEGIN HELPPTR:=5;
HELPLINE[4]:=966;HELPLINE[3]:=967;HELPLINE[2]:=968;HELPLINE[1]:=969;
HELPLINE[0]:=970;END;IF CSPTR=0 THEN BACKINPUT;CURTOK:=6454;INSERROR;
GOTO 20;END;END;{1183}PROCEDURE NEWFONT(A:SMALLNUMBER);LABEL 10,50;
VAR U:HALFWORD;S:SCALED;N:STRNUMBER;F:INTERNALFONT;
BEGIN IF JOBNAME=0 THEN OPENLOGFILE;{1186}GETRTOKEN;
IF CSPTR<258 THEN BEGIN PRINTNL(1021);BEGIN HELPPTR:=2;
HELPLINE[1]:=1022;HELPLINE[0]:=1023;END;BACKERROR;GOTO 10;END;
REPEAT IF(HASHUSED=258)THEN OVERFLOW(319,2100);HASHUSED:=HASHUSED-1;
UNTIL HASH[HASHUSED].RH=0;U:=CSPTR;HASH[HASHUSED].RH:=HASH[U].RH;
CSCOUNT:=CSCOUNT+1;;IF(A>=4)THEN GEQDEFINE(U,77,0)ELSE EQDEFINE(U,77,0);
SCANOPTIONAL;SCANFILENAME;
{1184}IF SCANKEYWORD(1016)THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
S:=CURVAL;IF(S<=0)OR(S>=134217728)THEN BEGIN PRINTNL(1017);
PRINTSCALED(S);PRINT(1018);BEGIN HELPPTR:=2;HELPLINE[1]:=1019;
HELPLINE[0]:=1020;END;ERROR;S:=10*65536;END;END ELSE S:=0;
{1185}FOR F:=1 TO FONTPTR DO IF STREQSTR(FONTNAME[F],CURNAME)AND
STREQSTR(FONTAREA[F],CURAREA)AND(((S=0)AND(FONTSIZE[F]=FONTDSIZE[F]))OR(
(S<>0)AND(S=FONTSIZE[F])))THEN GOTO 50;
F:=READFONTINFO(U,CURNAME,CURAREA,S);50:EQTB[U].HH.RH:=F;
GEQDEFINE(HASHUSED,77,F);FONTIDENT[F]:=HASHUSED;10:END;
{1191}PROCEDURE NEWINTERACTI;BEGIN PRINTLN;INTERACTION:=CURCHR;
{74}IF INTERACTION=0 THEN SELECTOR:=16 ELSE SELECTOR:=17;
IF JOBNAME<>0 THEN SELECTOR:=SELECTOR+2;END;
{1170}PROCEDURE DOREGISTERCO(A:SMALLNUMBER);LABEL 10;
VAR P,Q,R,S:HALFWORD;N:EIGHTBITS;BEGIN P:=CURCHR;Q:=CURCMD;SCANEIGHTBIT;
N:=CURVAL;
IF Q=85 THEN SCANOPTIONAL ELSE{1171}IF NOT SCANKEYWORD(1009)THEN BEGIN
PRINTNL(1010);BEGIN HELPPTR:=2;HELPLINE[1]:=1011;HELPLINE[0]:=1012;END;
ERROR;GOTO 10;END;ARITHERROR:=FALSE;
IF Q<87 THEN{1172}CASE P OF 0:BEGIN SCANINT;
IF Q=86 THEN CURVAL:=CURVAL+EQTB[3887+N].INT;END;
1:BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
IF Q=86 THEN CURVAL:=CURVAL+EQTB[4290+N].INT;END;
OTHERS:BEGIN SCANGLUE(P);IF Q=86 THEN{1173}BEGIN Q:=NEWSPEC(CURVAL);
IF P=2 THEN R:=EQTB[2385+N].HH.RH ELSE R:=EQTB[2641+N].HH.RH;
DELETEGLUERE(CURVAL);MEM[Q+1].INT:=MEM[Q+1].INT+MEM[R+1].INT;
IF MEM[Q+2].INT=0 THEN MEM[Q].HH.B0:=0;
IF MEM[Q].HH.B0=MEM[R].HH.B0 THEN MEM[Q+2].INT:=MEM[Q+2].INT+MEM[R+2].
INT ELSE IF(MEM[Q].HH.B0<MEM[R].HH.B0)AND(MEM[R+2].INT<>0)THEN BEGIN MEM
[Q+2].INT:=MEM[R+2].INT;MEM[Q].HH.B0:=MEM[R].HH.B0;END;
IF MEM[Q+3].INT=0 THEN MEM[Q].HH.B1:=0;
IF MEM[Q].HH.B1=MEM[R].HH.B1 THEN MEM[Q+3].INT:=MEM[Q+3].INT+MEM[R+3].
INT ELSE IF(MEM[Q].HH.B1<MEM[R].HH.B1)AND(MEM[R+3].INT<>0)THEN BEGIN MEM
[Q+3].INT:=MEM[R+3].INT;MEM[Q].HH.B1:=MEM[R].HH.B1;END;CURVAL:=Q;END;
END END ELSE{1174}BEGIN SCANINT;
CASE P OF 0:IF Q=87 THEN CURVAL:=NXPLUSY(EQTB[3887+N].INT,CURVAL,0)ELSE
CURVAL:=XOVERN(EQTB[3887+N].INT,CURVAL);
1:IF Q=87 THEN CURVAL:=NXPLUSY(EQTB[4290+N].INT,CURVAL,0)ELSE CURVAL:=
XOVERN(EQTB[4290+N].INT,CURVAL);
OTHERS:BEGIN IF P=2 THEN S:=EQTB[2385+N].HH.RH ELSE S:=EQTB[2641+N].HH.
RH;R:=NEWSPEC(S);
IF Q=87 THEN BEGIN MEM[R+1].INT:=NXPLUSY(MEM[S+1].INT,CURVAL,0);
MEM[R+2].INT:=NXPLUSY(MEM[S+2].INT,CURVAL,0);
MEM[R+3].INT:=NXPLUSY(MEM[S+3].INT,CURVAL,0);
END ELSE BEGIN MEM[R+1].INT:=XOVERN(MEM[S+1].INT,CURVAL);
MEM[R+2].INT:=XOVERN(MEM[S+2].INT,CURVAL);
MEM[R+3].INT:=XOVERN(MEM[S+3].INT,CURVAL);END;CURVAL:=R;END END;END;
IF ARITHERROR THEN BEGIN PRINTNL(1006);BEGIN HELPPTR:=2;
HELPLINE[1]:=1007;HELPLINE[0]:=1008;END;ERROR;GOTO 10;END;
CASE P OF 0:IF(A>=4)THEN GEQWORDDEFIN(3887+N,CURVAL)ELSE EQWORDDEFINE(
3887+N,CURVAL);
1:IF(A>=4)THEN GEQWORDDEFIN(4290+N,CURVAL)ELSE EQWORDDEFINE(4290+N,
CURVAL);
2:IF(A>=4)THEN GEQDEFINE(2385+N,105,CURVAL)ELSE EQDEFINE(2385+N,105,
CURVAL);
3:IF(A>=4)THEN GEQDEFINE(2641+N,105,CURVAL)ELSE EQDEFINE(2641+N,105,
CURVAL);END;10:END;PROCEDURE PREFIXEDCOMM;LABEL 10;VAR A:SMALLNUMBER;
J:HALFWORD;K:0..FONTMEMSIZE;P,Q,R:HALFWORD;N:INTEGER;E:BOOLEAN;
BEGIN A:=0;
WHILE CURCMD=79 DO BEGIN IF NOT ODD(A DIV CURCHR)THEN A:=A+CURCHR;
{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
IF CURCMD<=68 THEN{1146}BEGIN PRINTNL(961);PRINTCMDCHR(CURCMD,CURCHR);
PRINTCHAR(39);BEGIN HELPPTR:=1;HELPLINE[0]:=962;END;BACKERROR;GOTO 10;
END;END;{1147}IF(CURCMD<>83)AND(A MOD 4<>0)THEN BEGIN PRINTNL(963);
PRINTCMDCHR(CURCMD,CURCHR);PRINTCHAR(39);BEGIN HELPPTR:=1;
HELPLINE[0]:=964;END;ERROR;END;
CASE CURCMD OF{1151}77:IF(A>=4)THEN GEQDEFINE(3159,108,CURCHR)ELSE
EQDEFINE(3159,108,CURCHR);78:BEGIN SCANFOURBITI;
IF(A>=4)THEN GEQDEFINE(3208,108,CURVAL)ELSE EQDEFINE(3208,108,CURVAL);
END;{1152}83:BEGIN IF ODD(CURCHR)AND NOT(A>=4)THEN A:=A+4;
E:=(CURCHR>=2);GETRTOKEN;P:=CSPTR;Q:=SCANTOKS(TRUE,E);
IF(A>=4)THEN GEQDEFINE(P,100+(A MOD 4),DEFREF)ELSE EQDEFINE(P,100+(A MOD
4),DEFREF);END;{1155}80:BEGIN N:=CURCHR;GETRTOKEN;P:=CSPTR;
IF N=0 THEN BEGIN REPEAT GETTOKEN;UNTIL CURCMD<>10;
IF CURTOK=3133 THEN BEGIN GETTOKEN;IF CURCMD=10 THEN GETTOKEN;END;
END ELSE BEGIN GETTOKEN;Q:=CURTOK;GETTOKEN;BACKINPUT;CURTOK:=Q;
BACKINPUT;END;
IF CURCMD>=100 THEN MEM[CURCHR].HH.LH:=MEM[CURCHR].HH.LH+1;
IF(A>=4)THEN GEQDEFINE(P,CURCMD,CURCHR)ELSE EQDEFINE(P,CURCMD,CURCHR);
END;{1156}81:BEGIN GETRTOKEN;P:=CSPTR;SCANOPTIONAL;SCANFIFTEENB;
IF(A>=4)THEN GEQDEFINE(P,18,CURVAL)ELSE EQDEFINE(P,18,CURVAL);END;
{1158}82:BEGIN SCANFOURBITI;N:=CURVAL;GETRTOKEN;P:=CSPTR;READTOKS(N,P);
IF(A>=4)THEN GEQDEFINE(P,100,CURVAL)ELSE EQDEFINE(P,100,CURVAL);END;
{1159}69:BEGIN Q:=CSPTR;P:=CURCHR;SCANOPTIONAL;CSPTR:=Q;
Q:=SCANTOKS(FALSE,FALSE);
IF MEM[DEFREF].HH.RH=0 THEN BEGIN IF(A>=4)THEN GEQDEFINE(P,93,0)ELSE
EQDEFINE(P,93,0);BEGIN MEM[DEFREF].HH.RH:=AVAIL;AVAIL:=DEFREF;
DYNUSED:=DYNUSED-1;END;
END ELSE BEGIN IF P=2898 THEN BEGIN MEM[Q].HH.RH:=GETAVAIL;
Q:=MEM[Q].HH.RH;MEM[Q].HH.LH:=637;Q:=GETAVAIL;MEM[Q].HH.LH:=379;
MEM[Q].HH.RH:=MEM[DEFREF].HH.RH;MEM[DEFREF].HH.RH:=Q;END;
IF(A>=4)THEN GEQDEFINE(P,100,DEFREF)ELSE EQDEFINE(P,100,DEFREF);END;END;
{1160}70:BEGIN P:=CURCHR;SCANOPTIONAL;SCANINT;
IF(A>=4)THEN GEQWORDDEFIN(3849+P,CURVAL)ELSE EQWORDDEFINE(3849+P,CURVAL)
;END;71:BEGIN P:=CURCHR;SCANOPTIONAL;SCANDIMEN(FALSE,FALSE,FALSE);
IF(A>=4)THEN GEQWORDDEFIN(4271+P,CURVAL)ELSE EQWORDDEFINE(4271+P,CURVAL)
;END;72:BEGIN P:=CURCHR;SCANOPTIONAL;
IF P>=14 THEN SCANGLUE(3)ELSE SCANGLUE(2);
IF(MEM[CURVAL+1].INT=0)AND(MEM[CURVAL+2].INT=0)AND(MEM[CURVAL+3].INT=0)
THEN BEGIN MEM[0].HH.RH:=MEM[0].HH.RH+1;DELETEGLUERE(CURVAL);CURVAL:=0;
END;
IF(A>=4)THEN GEQDEFINE(2368+P,105,CURVAL)ELSE EQDEFINE(2368+P,105,CURVAL
);END;{1161}74:BEGIN SCANOPTIONAL;SCANDIMEN(FALSE,FALSE,FALSE);
IF(A>=4)THEN GEQWORDDEFIN(4289,CURVAL)ELSE EQWORDDEFINE(4289,CURVAL);
N:=1;IF SCANKEYWORD(974)THEN BEGIN SCANINT;N:=CURVAL;
END ELSE IF SCANKEYWORD(975)THEN BEGIN SCANINT;N:=-CURVAL;
IF N=0 THEN EQTB[4289].INT:=0;END ELSE N:=1;
IF(A>=4)THEN GEQWORDDEFIN(3886,N)ELSE EQWORDDEFINE(3886,N);END;
{1164}75:BEGIN{1165}IF CURCHR=3209 THEN N:=15 ELSE IF CURCHR=3337 THEN N
:=32767 ELSE IF CURCHR=3721 THEN N:=65536 ELSE IF CURCHR=4143 THEN N:=
16777215 ELSE N:=127;P:=CURCHR;SCANSEVENBIT;P:=P+CURVAL;SCANOPTIONAL;
SCANINT;IF((CURVAL<0)AND(P<4143))OR(CURVAL>N)THEN BEGIN PRINTNL(982);
PRINTINT(CURVAL);IF P<4143 THEN PRINT(983)ELSE PRINT(984);PRINTINT(N);
BEGIN HELPPTR:=1;HELPLINE[0]:=985;END;ERROR;CURVAL:=0;END;
IF P<4143 THEN IF(A>=4)THEN GEQDEFINE(P,108,CURVAL)ELSE EQDEFINE(P,108,
CURVAL)ELSE IF(A>=4)THEN GEQWORDDEFIN(P,CURVAL)ELSE EQWORDDEFINE(P,
CURVAL);END;{1166}76:BEGIN P:=CURCHR;SCANFOURBITI;P:=P+CURVAL;
SCANOPTIONAL;SCANFONTIDEN;
IF(A>=4)THEN GEQDEFINE(P,108,CURVAL)ELSE EQDEFINE(P,108,CURVAL);END;
{1169}85,86,87,88:DOREGISTERCO(A);{1175}89:BEGIN SCANEIGHTBIT;
IF(A>=4)THEN SAVESTACK[SAVEPTR+0].INT:=1073742080+CURVAL ELSE SAVESTACK[
SAVEPTR+0].INT:=1073741824+CURVAL;SCANOPTIONAL;SCANBOX;END;
{1176}90:BEGIN SCANINT;N:=CURVAL;
IF N<=0 THEN P:=0 ELSE BEGIN P:=GETNODE(2*N+1);MEM[P].HH.LH:=N;
FOR J:=1 TO N DO BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
MEM[P+2*J-1].INT:=CURVAL;SCANDIMEN(FALSE,FALSE,FALSE);
MEM[P+2*J].INT:=CURVAL;END;END;
IF(A>=4)THEN GEQDEFINE(2897,106,P)ELSE EQDEFINE(2897,106,P);END;
{1180}91:IF CURCHR=1 THEN BEGIN{NEWPATTERNS;GOTO 10;}PRINTNL(1015);
HELPPTR:=0;ERROR;END ELSE NEWHYPHEXCEP;{1181}73:BEGIN SCANTEXINFO(TRUE);
K:=CURVAL;SCANOPTIONAL;SCANDIMEN(FALSE,FALSE,FALSE);
FONTINFO[K].INT:=CURVAL;END;{1182}84:NEWFONT(A);{1190}92:NEWINTERACTI;
OTHERS:CONFUSION(960)END;10:END;{1192}PROCEDURE DOASSIGNMENT;
BEGIN{376}REPEAT GETXTOKEN;UNTIL CURCMD<>10;
WHILE CURCMD>68 DO BEGIN PREFIXEDCOMM;{376}REPEAT GETXTOKEN;
UNTIL CURCMD<>10;END;END;{1196}PROCEDURE OPENORCLOSEI;VAR C:0..1;
N:0..15;BEGIN C:=CURCHR;SCANFOURBITI;N:=CURVAL;
IF READOPEN[N]<>2 THEN ACLOSE(READFILE[N]);
IF C=0 THEN READOPEN[N]:=2 ELSE BEGIN SCANOPTIONAL;SCANFILENAME;
IF CUREXT=226 THEN CUREXT:=599;PACKFILENAME(CURNAME,CURAREA,CUREXT);
WHILE NOT AOPENIN(READFILE[N])DO PROMPTFILENA(595,599);READOPEN[N]:=1;
END;END;{1200}PROCEDURE ISSUEMESSAGE;VAR OLDSETTING:0..21;C:0..1;
S:STRNUMBER;BEGIN C:=CURCHR;MEM[25012].HH.RH:=SCANTOKS(FALSE,TRUE);
OLDSETTING:=SELECTOR;SELECTOR:=21;TOKENSHOW(DEFREF);
SELECTOR:=OLDSETTING;FLUSHLIST(DEFREF);
BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE);END;
S:=MAKESTRING;
IF C=0 THEN{1201}BEGIN IF TERMOFFSET+(STRSTART[S+1]-STRSTART[S])>
MAXPRINTLINE-2 THEN PRINTLN ELSE IF(TERMOFFSET>0)OR(FILEOFFSET>0)THEN
PRINTCHAR(32);PRINT(S);BREAK(TERMOUT);END ELSE{1204}BEGIN PRINTNL(692);
PRINT(S);IF ERRHELPSEEN THEN BEGIN HELPPTR:=1;HELPLINE[0]:=1033;
END ELSE BEGIN HELPPTR:=4;HELPLINE[3]:=1034;HELPLINE[2]:=1035;
HELPLINE[1]:=1036;HELPLINE[0]:=1037;END;ERROR;
IF INTERACTION<3 THEN ERRHELPSEEN:=TRUE;END;BEGIN STRPTR:=STRPTR-1;
POOLPTR:=STRSTART[STRPTR];END;END;{1208}PROCEDURE SHIFTCASE;
VAR B:HALFWORD;P:HALFWORD;T:HALFWORD;C:EIGHTBITS;BEGIN B:=CURCHR;
P:=SCANTOKS(FALSE,FALSE);P:=MEM[DEFREF].HH.RH;
WHILE P<>0 DO BEGIN{1209}T:=MEM[P].HH.LH;
IF(T<3328)AND(T>=2816)THEN BEGIN C:=T MOD 256;
IF C<128 THEN IF EQTB[B+C].HH.RH<>0 THEN MEM[P].HH.LH:=256*(T DIV 256)+
EQTB[B+C].HH.RH;END;P:=MEM[P].HH.RH;END;
BEGINTOKENLI(MEM[DEFREF].HH.RH,3);BEGIN MEM[DEFREF].HH.RH:=AVAIL;
AVAIL:=DEFREF;DYNUSED:=DYNUSED-1;END;END;{1213}PROCEDURE SHOWWHATEVER;
VAR P:HALFWORD;BEGIN CASE CURCHR OF 0:{1214}BEGIN GETTOKEN;
IF CSPTR=0 THEN BEGIN PRINTNL(1049);BEGIN HELPPTR:=1;HELPLINE[0]:=1050;
END;BACKERROR;END ELSE BEGIN PRINTNL(1051);SPRINTCS(CSPTR);
PRINTCHAR(61);PRINTCMDCHR(CURCMD,CURCHR);
IF CURCMD>=100 THEN BEGIN PRINTLN;TOKENSHOW(CURCHR);
END ELSE IF CURCMD=99 THEN BEGIN PRINTCHAR(58);PRINTLN;
TOKENSHOW(CURMARK[CURCHR]);END;IF INTERACTION<3 THEN BEGIN HELPPTR:=0;
ERRORCOUNT:=ERRORCOUNT-1;
END ELSE IF EQTB[3877].INT<>0 THEN BEGIN BEGIN HELPPTR:=3;
HELPLINE[2]:=1044;HELPLINE[1]:=1045;HELPLINE[0]:=1046;END;
END ELSE BEGIN BEGIN HELPPTR:=5;HELPLINE[4]:=1044;HELPLINE[3]:=1045;
HELPLINE[2]:=1046;HELPLINE[1]:=1047;HELPLINE[0]:=1048;END;END;ERROR;END;
END;1:{1216}BEGIN SCANEIGHTBIT;BEGINDIAGNOS;PRINTNL(1058);
PRINTINT(CURVAL);PRINTCHAR(61);
IF EQTB[2903+CURVAL].HH.RH=0 THEN PRINT(1059)ELSE SHOWBOX(EQTB[2903+
CURVAL].HH.RH);ENDDIAGNOSTI(TRUE);PRINTNL(1060);
IF INTERACTION<3 THEN BEGIN HELPPTR:=0;ERRORCOUNT:=ERRORCOUNT-1;
END ELSE IF EQTB[3877].INT<>0 THEN BEGIN BEGIN HELPPTR:=3;
HELPLINE[2]:=1044;HELPLINE[1]:=1045;HELPLINE[0]:=1046;END;
END ELSE BEGIN BEGIN HELPPTR:=5;HELPLINE[4]:=1044;HELPLINE[3]:=1045;
HELPLINE[2]:=1046;HELPLINE[1]:=1047;HELPLINE[0]:=1048;END;END;ERROR;END;
2:{1217}BEGIN P:=THETOKS(FALSE);PRINTNL(1051);TOKENSHOW(25003);
FLUSHLIST(MEM[25003].HH.RH);IF INTERACTION<3 THEN BEGIN HELPPTR:=0;
ERRORCOUNT:=ERRORCOUNT-1;
END ELSE IF EQTB[3877].INT<>0 THEN BEGIN BEGIN HELPPTR:=3;
HELPLINE[2]:=1044;HELPLINE[1]:=1045;HELPLINE[0]:=1046;END;
END ELSE BEGIN BEGIN HELPPTR:=5;HELPLINE[4]:=1044;HELPLINE[3]:=1045;
HELPLINE[2]:=1046;HELPLINE[1]:=1047;HELPLINE[0]:=1048;END;END;ERROR;END;
OTHERS:{1218}BEGIN BEGINDIAGNOS;SHOWACTIVITI;ENDDIAGNOSTI(TRUE);
PRINTNL(1060);IF INTERACTION<3 THEN BEGIN HELPPTR:=0;
ERRORCOUNT:=ERRORCOUNT-1;
END ELSE IF EQTB[3877].INT<>0 THEN BEGIN BEGIN HELPPTR:=3;
HELPLINE[2]:=1044;HELPLINE[1]:=1045;HELPLINE[0]:=1046;END;
END ELSE BEGIN BEGIN HELPPTR:=5;HELPLINE[4]:=1044;HELPLINE[3]:=1045;
HELPLINE[2]:=1046;HELPLINE[1]:=1047;HELPLINE[0]:=1048;END;END;ERROR;
END END;END;{1222}{PROCEDURE STOREFMTFILE;LABEL 41,42,31,32;
VAR J,K,L:INTEGER;P,Q:HALFWORD;X:INTEGER;W:FOURQUARTERS;
BEGIN[1224]IF SAVEPTR<>0 THEN BEGIN PRINTNL(1062);BEGIN HELPPTR:=1;
HELPLINE[0]:=1063;END;BEGIN IF INTERACTION=3 THEN INTERACTION:=2;ERROR;
[IF INTERACTION>0 THEN DEBUGHELP;]JUMPOUT;END;END;[1248]SELECTOR:=21;
PRINT(1073);PRINT(JOBNAME);PRINTCHAR(32);
PRINTINT(EQTB[3871].INT MOD 100);PRINTCHAR(46);PRINTINT(EQTB[3870].INT);
PRINTCHAR(46);PRINTINT(EQTB[3869].INT);PRINTCHAR(41);
IF INTERACTION=0 THEN SELECTOR:=18 ELSE SELECTOR:=19;
BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE);END;
FORMATIDENT:=MAKESTRING;PACKJOBNAME(1074);
WHILE NOT WOPENOUT(FMTFILE)DO PROMPTFILENA(1075,1074);PRINTNL(1076);
PRINT(WMAKENAMESTR(FMTFILE));BEGIN STRPTR:=STRPTR-1;
POOLPTR:=STRSTART[STRPTR];END;PRINT(FORMATIDENT);
[1227]BEGIN FMTFILE↑.INT:=86336324;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=25000;PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=4545;
PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=1777;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=307;PUT(FMTFILE);END;
[1229]BEGIN FMTFILE↑.INT:=POOLPTR;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=STRPTR;PUT(FMTFILE);END;
FOR K:=0 TO STRPTR DO BEGIN FMTFILE↑.INT:=STRSTART[K];PUT(FMTFILE);END;
K:=0;WHILE K+4<POOLPTR DO BEGIN W.B0:=STRPOOL[K];W.B1:=STRPOOL[K+1];
W.B2:=STRPOOL[K+2];W.B3:=STRPOOL[K+3];BEGIN FMTFILE↑.QQQQ:=W;
PUT(FMTFILE);END;K:=K+4;END;K:=POOLPTR-4;W.B0:=STRPOOL[K];
W.B1:=STRPOOL[K+1];W.B2:=STRPOOL[K+2];W.B3:=STRPOOL[K+3];
BEGIN FMTFILE↑.QQQQ:=W;PUT(FMTFILE);END;PRINTLN;PRINTINT(STRPTR);
PRINT(1064);PRINTINT(POOLPTR);[1231]SORTAVAIL;VARUSED:=0;
BEGIN FMTFILE↑.INT:=ROVER;PUT(FMTFILE);END;P:=0;Q:=ROVER;X:=0;
REPEAT FOR K:=P TO Q+1 DO BEGIN FMTFILE↑:=MEM[K];PUT(FMTFILE);END;
X:=X+Q+2-P;VARUSED:=VARUSED+Q-P;P:=Q+MEM[Q].HH.LH;Q:=MEM[Q+1].HH.RH;
UNTIL Q=ROVER;VARUSED:=VARUSED+25000-P;DYNUSED:=MEMEND-24999;
BEGIN FMTFILE↑.INT:=MEMEND;PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=AVAIL;
PUT(FMTFILE);END;FOR K:=P TO MEMEND DO BEGIN FMTFILE↑:=MEM[K];
PUT(FMTFILE);END;X:=X+MEMEND+1-P;P:=AVAIL;
WHILE P<>0 DO BEGIN DYNUSED:=DYNUSED-1;P:=MEM[P].HH.RH;END;
BEGIN FMTFILE↑.INT:=VARUSED;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=DYNUSED;PUT(FMTFILE);END;PRINTLN;PRINTINT(X);
PRINT(1065);PRINTINT(VARUSED);PRINTCHAR(38);PRINTINT(DYNUSED);
[1233][1235]K:=1;REPEAT J:=K;
WHILE J<3848 DO BEGIN IF(EQTB[J].HH.RH=EQTB[J+1].HH.RH)AND(EQTB[J].HH.B0
=EQTB[J+1].HH.B0)AND(EQTB[J].HH.B1=EQTB[J+1].HH.B1)THEN GOTO 41;J:=J+1;
END;L:=3849;GOTO 31;41:J:=J+1;L:=J;
WHILE J<3848 DO BEGIN IF(EQTB[J].HH.RH<>EQTB[J+1].HH.RH)OR(EQTB[J].HH.B0
<>EQTB[J+1].HH.B0)OR(EQTB[J].HH.B1<>EQTB[J+1].HH.B1)THEN GOTO 31;J:=J+1;
END;31:BEGIN FMTFILE↑.INT:=L-K;PUT(FMTFILE);END;
WHILE K<L DO BEGIN BEGIN FMTFILE↑:=EQTB[K];PUT(FMTFILE);END;K:=K+1;END;
K:=J+1;BEGIN FMTFILE↑.INT:=K-L;PUT(FMTFILE);END;UNTIL K=3849;
[1236]REPEAT J:=K;
WHILE J<4545 DO BEGIN IF EQTB[J].INT=EQTB[J+1].INT THEN GOTO 42;J:=J+1;
END;L:=4546;GOTO 32;42:J:=J+1;L:=J;
WHILE J<4545 DO BEGIN IF EQTB[J].INT<>EQTB[J+1].INT THEN GOTO 32;J:=J+1;
END;32:BEGIN FMTFILE↑.INT:=L-K;PUT(FMTFILE);END;
WHILE K<L DO BEGIN BEGIN FMTFILE↑:=EQTB[K];PUT(FMTFILE);END;K:=K+1;END;
K:=J+1;BEGIN FMTFILE↑.INT:=K-L;PUT(FMTFILE);END;UNTIL K>4545;
BEGIN FMTFILE↑.INT:=PARLOC;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=WRITELOC;PUT(FMTFILE);END;
[1238]BEGIN FMTFILE↑.INT:=HASHUSED;PUT(FMTFILE);END;
CSCOUNT:=2357-HASHUSED;
FOR P:=258 TO HASHUSED DO IF HASH[P].RH<>0 THEN BEGIN BEGIN FMTFILE↑.INT
:=P;PUT(FMTFILE);END;BEGIN FMTFILE↑.HH:=HASH[P];PUT(FMTFILE);END;
CSCOUNT:=CSCOUNT+1;END;
FOR P:=HASHUSED+1 TO 2366 DO BEGIN FMTFILE↑.HH:=HASH[P];PUT(FMTFILE);
END;BEGIN FMTFILE↑.INT:=CSCOUNT;PUT(FMTFILE);END;PRINTLN;
PRINTINT(CSCOUNT);PRINT(1066);[1240]BEGIN FMTFILE↑.INT:=FMEMPTR;
PUT(FMTFILE);END;FOR K:=7 TO FMEMPTR-1 DO BEGIN FMTFILE↑:=FONTINFO[K];
PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=FONTPTR;PUT(FMTFILE);END;
FOR K:=1 TO FONTPTR DO[1242]BEGIN BEGIN FMTFILE↑.INT:=FONTIDENT[K];
PUT(FMTFILE);END;BEGIN FMTFILE↑.QQQQ:=FONTCHECK[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTSIZE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTDSIZE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTPARAMS[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTNAME[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTAREA[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTBC[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTEC[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=CHARBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=WIDTHBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=HEIGHTBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=DEPTHBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=ITALICBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=LIGKERNBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=KERNBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=EXTENBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=PARAMBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTGLUE[K];PUT(FMTFILE);END;PRINTNL(1069);
SPRINTCS(FONTIDENT[K]);PRINTCHAR(61);
PRINTFILENAM(FONTNAME[K],FONTAREA[K],226);
IF FONTSIZE[K]<>FONTDSIZE[K]THEN BEGIN PRINT(552);
PRINTSCALED(FONTSIZE[K]);PRINT(516);END;END;PRINTLN;PRINTINT(FMEMPTR-7);
PRINT(1067);PRINTINT(FONTPTR-0);PRINT(1068);
IF FONTPTR<>1 THEN PRINTCHAR(115);[1244]BEGIN FMTFILE↑.INT:=HYPHCOUNT;
PUT(FMTFILE);END;
FOR K:=0 TO 307 DO IF HYPHWORD[K]<>0 THEN BEGIN BEGIN FMTFILE↑.INT:=K;
PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=HYPHWORD[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=HYPHLIST[K];PUT(FMTFILE);END;END;
BEGIN FMTFILE↑.INT:=TRIEMAX;PUT(FMTFILE);END;
FOR K:=0 TO TRIEMAX DO BEGIN FMTFILE↑.HH:=TRIE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=TRIEOPPTR;PUT(FMTFILE);END;
FOR K:=1 TO TRIEOPPTR DO BEGIN BEGIN FMTFILE↑.INT:=HYFDISTANCE[K];
PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=HYFNUM[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=HYFNEXT[K];PUT(FMTFILE);END;END;PRINTLN;
PRINTINT(HYPHCOUNT);PRINT(1070);IF HYPHCOUNT<>1 THEN PRINTCHAR(115);
PRINTNL(1071);PRINTINT(TRIEMAX);PRINT(626);PRINTINT(TRIEOPPTR);
PRINT(1072);IF TRIEOPPTR<>1 THEN PRINTCHAR(115);
[1246]BEGIN FMTFILE↑.INT:=INTERACTION;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FORMATIDENT;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=69069;PUT(FMTFILE);END;EQTB[3879].INT:=0;
[1249]WCLOSE(FMTFILE);END;
}{1269}{1270}PROCEDURE NEWWHATSIT(S:SMALLNUMBER;W:SMALLNUMBER);
VAR P:HALFWORD;BEGIN P:=GETNODE(W);MEM[P].HH.B0:=8;MEM[P].HH.B1:=S;
MEM[CURLIST.TAILFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;END;
{1271}PROCEDURE NEWWRITEWHAT(W:SMALLNUMBER);VAR P:HALFWORD;
BEGIN NEWWHATSIT(CURCHR,W);SCANFOURBITI;
MEM[CURLIST.TAILFIELD+1].HH.LH:=CURVAL;END;PROCEDURE DOEXTENSION;
VAR I,J,K:INTEGER;P,Q,R:HALFWORD;
BEGIN CASE CURCHR OF 0:{1272}BEGIN NEWWRITEWHAT(3);SCANOPTIONAL;
SCANFILENAME;MEM[CURLIST.TAILFIELD+1].HH.RH:=CURNAME;
MEM[CURLIST.TAILFIELD+2].HH.LH:=CURAREA;
MEM[CURLIST.TAILFIELD+2].HH.RH:=CUREXT;END;1:{1273}BEGIN K:=CSPTR;
NEWWRITEWHAT(2);CSPTR:=K;P:=SCANTOKS(FALSE,FALSE);
MEM[CURLIST.TAILFIELD+1].HH.RH:=DEFREF;END;
2:{1274}BEGIN NEWWRITEWHAT(2);MEM[CURLIST.TAILFIELD+1].HH.RH:=0;END;
3:{1275}BEGIN NEWWHATSIT(3,2);MEM[CURLIST.TAILFIELD+1].HH.LH:=0;
P:=SCANTOKS(FALSE,TRUE);MEM[CURLIST.TAILFIELD+1].HH.RH:=DEFREF;END;
4:{1294}BEGIN GETXTOKEN;
IF(CURCMD=57)AND(CURCHR<=2)THEN BEGIN P:=CURLIST.TAILFIELD;DOEXTENSION;
OUTWHAT(CURLIST.TAILFIELD);FLUSHNODELIS(CURLIST.TAILFIELD);
CURLIST.TAILFIELD:=P;MEM[P].HH.RH:=0;END ELSE BACKINPUT;END;
OTHERS:CONFUSION(1096)END;END;{1004}PROCEDURE HANDLERIGHTB;
VAR P:HALFWORD;BEGIN CASE CURGROUP OF 1:UNSAVE;0:BEGIN PRINTNL(828);
BEGIN HELPPTR:=2;HELPLINE[1]:=829;HELPLINE[0]:=830;END;ERROR;END;
12,13,14:EXTRARIGHTBR;{1021}2:PACKAGE(0);3:BEGIN ENDGRAF;PACKAGE(0);END;
4:BEGIN ENDGRAF;PACKAGE(4);END;{1036}10:BEGIN ENDGRAF;UNSAVE;
SAVEPTR:=SAVEPTR-1;
IF CURLIST.HEADFIELD<>CURLIST.TAILFIELD THEN BEGIN P:=VPACKAGE(MEM[
CURLIST.HEADFIELD].HH.RH,0,1,1073741823);POPNEST;
IF SAVESTACK[SAVEPTR+0].INT<255 THEN BEGIN BEGIN MEM[CURLIST.TAILFIELD].
HH.RH:=GETNODE(3);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=3;
MEM[CURLIST.TAILFIELD].HH.B1:=SAVESTACK[SAVEPTR+0].INT;
MEM[CURLIST.TAILFIELD+1].INT:=MEM[P+3].INT+MEM[P+2].INT;
MEM[CURLIST.TAILFIELD+2].INT:=MEM[P+5].HH.RH;
END ELSE BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=GETNODE(2);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=5;MEM[CURLIST.TAILFIELD].HH.B1:=0;
MEM[CURLIST.TAILFIELD+1].INT:=MEM[P+5].HH.RH;END;FREENODE(P,7);END;
{408}BEGIN GETTOKEN;IF CURCMD<>10 THEN BACKINPUT;END;END;
7:{960}BEGIN IF CURINPUT.LOCFIELD<>0 THEN CONFUSION(255);ENDTOKENLIST;
ENDGRAF;UNSAVE;OUTPUTACTIVE:=FALSE;
{961}IF EQTB[3158].HH.RH<>0 THEN BEGIN PRINTNL(788);BEGIN HELPPTR:=3;
HELPLINE[2]:=789;HELPLINE[1]:=790;HELPLINE[0]:=791;END;BOX255ERROR;END;
IF CURLIST.TAILFIELD<>CURLIST.HEADFIELD THEN BEGIN MEM[PAGETAIL].HH.RH:=
MEM[CURLIST.HEADFIELD].HH.RH;PAGETAIL:=CURLIST.TAILFIELD;END;
IF MEM[25002].HH.RH<>0 THEN BEGIN IF MEM[25001].HH.RH=0 THEN NEST[0].
TAILFIELD:=PAGETAIL;MEM[PAGETAIL].HH.RH:=MEM[25001].HH.RH;
MEM[25001].HH.RH:=MEM[25002].HH.RH;MEM[25002].HH.RH:=0;PAGETAIL:=25002;
END;POPNEST;BUILDPAGE;END;{1054}9:BUILDDISCRET;{1072}5:BEGIN BACKINPUT;
CURTOK:=6455;PRINTNL(906);BEGIN HELPPTR:=1;HELPLINE[0]:=907;END;
INSERROR;END;{1073}6:BEGIN ENDGRAF;UNSAVE;ALIGNPEEK;END;
{1105}11:BEGIN ENDGRAF;UNSAVE;SAVEPTR:=SAVEPTR-2;
P:=VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,SAVESTACK[SAVEPTR+1].INT,
SAVESTACK[SAVEPTR+0].INT,1073741823);POPNEST;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=28;MEM[CURLIST.TAILFIELD+1].HH.RH:=2;
MEM[CURLIST.TAILFIELD+1].HH.LH:=P;END;{1121}8:BEGIN UNSAVE;
SAVEPTR:=SAVEPTR-1;MEM[SAVESTACK[SAVEPTR+0].INT].HH.RH:=3;
MEM[SAVESTACK[SAVEPTR+0].INT].HH.LH:=FINMLIST(0);END;
OTHERS:CONFUSION(831)END;END;PROCEDURE MAINCONTROL;
LABEL 60,21,70,71,72,73,74,10;VAR T:INTEGER;{965}L:QUARTERWORD;
C:EIGHTBITS;F:INTERNALFONT;R:HALFWORD;P:HALFWORD;K:0..FONTMEMSIZE;
Q:HALFWORD;I:FOURQUARTERS;J:FOURQUARTERS;S:INTEGER;LIGATUREPRES:BOOLEAN;
BEGIN 60:GETXTOKEN;
21:{964}IF INTERRUPT>0 THEN IF OKTOINTERRUP THEN BEGIN BACKINPUT;
PAUSEFORINST;GOTO 60;END;{IF PANICKING THEN CHECKMEM(FALSE);
}IF EQTB[3882].INT>0 THEN SHOWCURCMDCH;
CASE ABS(CURLIST.MODEFIELD)+CURCMD OF 105,106:GOTO 70;
110:BEGIN SCANCHARNUM;CURCHR:=CURVAL;GOTO 70;END;
104:IF CURLIST.AUXFIELD=1000 THEN GOTO 74 ELSE APPSPACE;156,249:GOTO 74;
{979}1,94,187,11,14,197:;41,134,227:BEGIN{376}REPEAT GETXTOKEN;
UNTIL CURCMD<>10;GOTO 21;END;21:STARTINPUT;
15:IF ITSALLOVER THEN GOTO 10;
{982}114,207,{992}37,131,224,{1009}25,117,210,{1027}229,{1034}40,226,{
1047}212,44,{1061}231,{1069}35,127,221,{1083}48,141,7,100,193:
REPORTILLEGA;
{980}8,101,9,102,18,111,19,112,50,143,16,109,49,142,52,145,64,157,53,146
,55,148,54,147,32,125,51,144,30,123,46,139,196,200,201,215:BEGIN
INSERTDOLLAR;GOTO 21;END;
{991}38,130,223:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=SCANRULESPEC;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
IF ABS(CURLIST.MODEFIELD)=1 THEN CURLIST.AUXFIELD:=-65536000;END;
{993}29,121,214,216:APPENDGLUE;31,124,217,218:APPENDKERN;
{999}2,95:NEWSAVELEVEL(1);60,153,246:NEWSAVELEVEL(12);
61,154,247:IF CURGROUP=12 THEN UNSAVE ELSE OFFSAVE;
{1003}3,96,189:HANDLERIGHTB;{1008}24,118,211:BEGIN T:=CURCHR;
SCANDIMEN(FALSE,FALSE,FALSE);
IF T=0 THEN SAVESTACK[SAVEPTR+0].INT:=CURVAL ELSE SAVESTACK[SAVEPTR+0].
INT:=-CURVAL;SCANBOX;END;
33,126,219:BEGIN SAVESTACK[SAVEPTR+0].INT:=1073742237+CURCHR;SCANBOX;
END;23,116,209:BEGIN SAVESTACK[SAVEPTR+0].INT:=0;BEGINBOX;END;
{1026}43:NEWGRAF(CURCHR>0);12,13,17,4,65,45,47,28,63,66:BEGIN BACKINPUT;
NEWGRAF(TRUE);END;{1029}136:INDENTINHMOD;
{1031}107:BEGIN IF ALIGNSTATE<0 THEN OFFSAVE;ENDGRAF;
IF CURLIST.MODEFIELD=1 THEN BUILDPAGE;END;
108,122:IF PRIVILEGED THEN BEGIN BACKINPUT;CURTOK:=PARTOKEN;
CSPTR:=PARLOC;CURCMD:=EQTB[CSPTR].HH.B0;CURCHR:=EQTB[CSPTR].HH.RH;
GOTO 21;END;{1033}39,132,225,133:BEGININSERTO;20,113,206:MAKEMARK;
{1038}68,161,254:CHANGEAUX;{1040}42,135,228:APPENDPENALT;
{1042}27,120,213:DELETESKIP;{1045}26,119:UNPACKAGE;
{1048}137:APPENDITALIC;
230:BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(0);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
{1052}140,233:APPENDDISCRE;
{1058}158,251:BEGIN MEM[25012].HH.RH:=THETOKS(CURCHR>0);
BEGINTOKENLI(MEM[25003].HH.RH,4);END;159,252,160,253:INSTHE;
{1060}138:MAKEACCENT;{1065}6,99,192,5,98,191:ALIGNERROR;
36,129,222:NOALIGNERROR;62,155,248:OMITERROR;{1070}34,128:INITALIGN;
220:IF PRIVILEGED THEN IF CURGROUP=13 THEN INITALIGN ELSE OFFSAVE;
10,103:DOENDV;{1074}69,162,255:CSERROR;{1076}97:INITMATH;
{1079}234:IF PRIVILEGED THEN STARTEQNO;
{1089}188:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;BACKINPUT;
SCANMATH(CURLIST.TAILFIELD+1);END;
{1092}198,199:SETMATHCHAR(EQTB[3337+CURCHR].HH.RH);
203:BEGIN SCANCHARNUM;SETMATHCHAR(CURVAL+28672);END;
204:BEGIN SCANFIFTEENB;SETMATHCHAR(CURVAL);END;205:SETMATHCHAR(CURCHR);
202:BEGIN SCANTWENTYSE;SETMATHCHAR(CURVAL DIV 4096);END;
{1096}236:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=CURCHR;SCANMATH(CURLIST.TAILFIELD+1);END;
237:MATHLIMITSWI;{1100}250:MATHRADICAL;{1102}232:MATHAC;
{1104}241:BEGIN SCANSPEC;NEWSAVELEVEL(11);PUSHNEST;
CURLIST.MODEFIELD:=-1;CURLIST.AUXFIELD:=-65536000;END;
{1108}239:BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWSTYLE(CURCHR);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;240:MATHNONSCRIP;
{1110}195,194:SUBSUP;{1115}238:MATHFRACTION;{1124}235:MATHLEFTRIGH;
{1127}190:IF CURGROUP=13 THEN FINMATH ELSE OFFSAVE;
{1144}70,163,256,71,164,257,72,165,258,73,166,259,74,167,260,75,168,261,
76,169,262,77,170,263,78,171,264,79,172,265,80,173,266,81,174,267,82,175
,268,83,176,269,84,177,270,85,178,271,86,179,272,87,180,273,88,181,274,
89,182,275,90,183,276,91,184,277,92,185,278,93,186,279:PREFIXEDCOMM;
{1195}59,152,245:OPENORCLOSEI;{1197}57,150,243:ISSUEMESSAGE;
{1205}56,149,242:SHIFTCASE;{1210}22,115,208:SHOWWHATEVER;
{1268}58,151,244:DOEXTENSION;END;GOTO 60;70:{966}F:=EQTB[3159].HH.RH;
IF F=0 THEN BEGIN MISSINGFONT;GOTO 60;END;C:=CURCHR;
71:IF(C<FONTBC[F])OR(C>FONTEC[F])THEN BEGIN CHARWARNING(F,C);GOTO 60;
END;72:Q:=CURLIST.TAILFIELD;LIGATUREPRES:=FALSE;L:=C;
73:{968}IF C<128 THEN BEGIN S:=EQTB[3721+C].HH.RH;
IF S=1000 THEN CURLIST.AUXFIELD:=1000 ELSE IF S<1000 THEN BEGIN IF S>0
THEN CURLIST.AUXFIELD:=S;
END ELSE IF CURLIST.AUXFIELD<1000 THEN CURLIST.AUXFIELD:=1000 ELSE
CURLIST.AUXFIELD:=S;END ELSE CURLIST.AUXFIELD:=1000;
{969}I:=FONTINFO[CHARBASE[F]+L].QQQQ;IF(I.B0>0)THEN BEGIN P:=AVAIL;
IF P=0 THEN P:=GETAVAIL ELSE BEGIN AVAIL:=MEM[P].HH.RH;MEM[P].HH.RH:=0;
DYNUSED:=DYNUSED+1;END;MEM[P].HH.B0:=F;MEM[P].HH.B1:=C;
MEM[CURLIST.TAILFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;
END ELSE CHARWARNING(F,L);{970}GETNEXT;
IF(CURCMD=11)OR(CURCMD=12)THEN R:=CURCHR ELSE BEGIN XTOKEN;
IF(CURCMD=11)OR(CURCMD=12)THEN R:=CURCHR ELSE IF CURCMD=16 THEN BEGIN
SCANCHARNUM;R:=CURVAL;END ELSE R:=256;END;
IF((I.B2 MOD 4)=1)AND(R<>256)THEN{971}BEGIN K:=LIGKERNBASE[F]+I.B3;
REPEAT J:=FONTINFO[K].QQQQ;
IF J.B1=R THEN IF J.B2<128 THEN{974}BEGIN LIGATUREPRES:=TRUE;L:=J.B3;
C:=R;GOTO 73;
END ELSE{972}BEGIN{973}IF LIGATUREPRES THEN BEGIN P:=NEWLIGATURE(F,L,MEM
[Q].HH.RH);MEM[Q].HH.RH:=P;CURLIST.TAILFIELD:=P;END;
IF C=45 THEN IF CURLIST.MODEFIELD=94 THEN BEGIN MEM[CURLIST.TAILFIELD].
HH.RH:=NEWDISC;CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(FONTINFO[KERNBASE[F]+J.B3].
INT);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;C:=R;GOTO 72;
END;K:=K+1;UNTIL J.B0>=128;END;
{973}IF LIGATUREPRES THEN BEGIN P:=NEWLIGATURE(F,L,MEM[Q].HH.RH);
MEM[Q].HH.RH:=P;CURLIST.TAILFIELD:=P;END;
IF C=45 THEN IF CURLIST.MODEFIELD=94 THEN BEGIN MEM[CURLIST.TAILFIELD].
HH.RH:=NEWDISC;CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
IF R=256 THEN GOTO 21;C:=R;GOTO 71;
74:{975}IF EQTB[2379].HH.RH=0 THEN BEGIN{976}BEGIN P:=FONTGLUE[EQTB[3159
].HH.RH];IF P=0 THEN BEGIN F:=EQTB[3159].HH.RH;P:=NEWSPEC(0);
K:=PARAMBASE[F]+2;MEM[P+1].INT:=FONTINFO[K].INT;
MEM[P+2].INT:=FONTINFO[K+1].INT;MEM[P+3].INT:=FONTINFO[K+2].INT;
FONTGLUE[F]:=P;END;END;Q:=NEWGLUE(P);END ELSE Q:=NEWPARAMGLUE(11);
MEM[CURLIST.TAILFIELD].HH.RH:=Q;CURLIST.TAILFIELD:=Q;GOTO 60;10:END;
{1223}{483}FUNCTION OPENFMTFILE:BOOLEAN;LABEL 40,10;VAR J:0..BUFSIZE;
BEGIN IF BUFFER[CURINPUT.LOCFIELD]=38 THEN BEGIN CURINPUT.LOCFIELD:=
CURINPUT.LOCFIELD+1;J:=CURINPUT.LOCFIELD;BUFFER[LAST]:=32;
WHILE BUFFER[J]<>32 DO J:=J+1;PACKBUFFERED(0,CURINPUT.LOCFIELD,J-1);
IF WOPENIN(FMTFILE)THEN BEGIN CURINPUT.LOCFIELD:=J;GOTO 40;END;
PACKBUFFERED(9,CURINPUT.LOCFIELD,J-1);
IF WOPENIN(FMTFILE)THEN BEGIN CURINPUT.LOCFIELD:=J;GOTO 40;END;
WRITELN(TERMOUT,'Sorry, I can''t find that format; will try PLAIN.');
END;PACKBUFFERED(14,1,0);
IF NOT WOPENIN(FMTFILE)THEN BEGIN WRITELN(TERMOUT,
'I can''t find the PLAIN format file!');OPENFMTFILE:=FALSE;GOTO 10;END;
40:OPENFMTFILE:=TRUE;10:END;FUNCTION LOADFMTFILE:BOOLEAN;LABEL 6666,10;
VAR J,K:INTEGER;P,Q:HALFWORD;X,Y:INTEGER;W:FOURQUARTERS;
BEGIN{1228}X:=FMTFILE↑.INT;IF X<>86336324 THEN GOTO 6666;
BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;IF X<>25000 THEN GOTO 6666;
BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;IF X<>4545 THEN GOTO 6666;
BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;IF X<>1777 THEN GOTO 6666;
BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;IF X<>307 THEN GOTO 6666;
{1230}BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF X<0 THEN GOTO 6666;
IF X>POOLSIZE THEN BEGIN WRITELN(TERMOUT,'---! Must increase the ',
'string pool size');GOTO 6666;END ELSE POOLPTR:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;IF X<0 THEN GOTO 6666;
IF X>MAXSTRINGS THEN BEGIN WRITELN(TERMOUT,'---! Must increase the ',
'max strings');GOTO 6666;END ELSE STRPTR:=X;END;
FOR K:=0 TO STRPTR DO BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>POOLPTR)THEN GOTO 6666 ELSE STRSTART[K]:=X;END;K:=0;
WHILE K+4<POOLPTR DO BEGIN BEGIN GET(FMTFILE);W:=FMTFILE↑.QQQQ;END;
STRPOOL[K]:=W.B0;STRPOOL[K+1]:=W.B1;STRPOOL[K+2]:=W.B2;
STRPOOL[K+3]:=W.B3;K:=K+4;END;K:=POOLPTR-4;BEGIN GET(FMTFILE);
W:=FMTFILE↑.QQQQ;END;STRPOOL[K]:=W.B0;STRPOOL[K+1]:=W.B1;
STRPOOL[K+2]:=W.B2;STRPOOL[K+3]:=W.B3;{1232}BEGIN BEGIN GET(FMTFILE);
X:=FMTFILE↑.INT;END;IF(X<0)OR(X>25000)THEN GOTO 6666 ELSE ROVER:=X;END;
P:=0;Q:=ROVER;X:=0;REPEAT FOR K:=P TO Q+1 DO BEGIN GET(FMTFILE);
MEM[K]:=FMTFILE↑;END;P:=Q+MEM[Q].HH.LH;
IF(P>25000)OR((Q>=MEM[Q+1].HH.RH)AND(MEM[Q+1].HH.RH<>ROVER))THEN GOTO
6666;Q:=MEM[Q+1].HH.RH;UNTIL Q=ROVER;BEGIN BEGIN GET(FMTFILE);
X:=FMTFILE↑.INT;END;IF X<25000 THEN GOTO 6666;
IF X>MEMMAX THEN BEGIN WRITELN(TERMOUT,'---! Must increase the ',
'mem max');GOTO 6666;END ELSE MEMEND:=X;END;BEGIN BEGIN GET(FMTFILE);
X:=FMTFILE↑.INT;END;IF(X<0)OR(X>MEMEND)THEN GOTO 6666 ELSE AVAIL:=X;END;
FOR K:=P TO MEMEND DO BEGIN GET(FMTFILE);MEM[K]:=FMTFILE↑;END;
BEGIN GET(FMTFILE);VARUSED:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
DYNUSED:=FMTFILE↑.INT;END;MAXVARUSED:=VARUSED;{1234}{1237}K:=1;
REPEAT BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<1)OR(K+X>4546)THEN GOTO 6666;
FOR J:=K TO K+X-1 DO BEGIN GET(FMTFILE);EQTB[J]:=FMTFILE↑;END;K:=K+X;
BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(K+X>4546)THEN GOTO 6666;
FOR J:=K TO K+X-1 DO EQTB[J]:=EQTB[K-1];K:=K+X;UNTIL K>4545;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<258)OR(X>2358)THEN GOTO 6666 ELSE PARLOC:=X;END;
PARTOKEN:=4096+PARLOC;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<258)OR(X>2358)THEN GOTO 6666 ELSE WRITELOC:=X;END;
{1239}BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<258)OR(X>2358)THEN GOTO 6666 ELSE HASHUSED:=X;END;P:=257;
REPEAT BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<P+1)OR(X>HASHUSED)THEN GOTO 6666 ELSE P:=X;END;BEGIN GET(FMTFILE);
HASH[P]:=FMTFILE↑.HH;END;UNTIL P=HASHUSED;
FOR P:=HASHUSED+1 TO 2366 DO BEGIN GET(FMTFILE);HASH[P]:=FMTFILE↑.HH;
END;BEGIN GET(FMTFILE);CSCOUNT:=FMTFILE↑.INT;END;
{1241}BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF X<7 THEN GOTO 6666;
IF X>FONTMEMSIZE THEN BEGIN WRITELN(TERMOUT,'---! Must increase the ',
'font mem size');GOTO 6666;END ELSE FMEMPTR:=X;END;
FOR K:=7 TO FMEMPTR-1 DO BEGIN GET(FMTFILE);FONTINFO[K]:=FMTFILE↑;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;IF X<0 THEN GOTO 6666;
IF X>FONTMAX THEN BEGIN WRITELN(TERMOUT,'---! Must increase the ',
'font max');GOTO 6666;END ELSE FONTPTR:=X;END;
FOR K:=1 TO FONTPTR DO{1243}BEGIN BEGIN BEGIN GET(FMTFILE);
X:=FMTFILE↑.INT;END;
IF(X<1)OR(X>2367)THEN GOTO 6666 ELSE FONTIDENT[K]:=X;END;
BEGIN GET(FMTFILE);FONTCHECK[K]:=FMTFILE↑.QQQQ;END;BEGIN GET(FMTFILE);
FONTSIZE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
FONTDSIZE[K]:=FMTFILE↑.INT;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;
END;IF(X<0)OR(X>262143)THEN GOTO 6666 ELSE FONTPARAMS[K]:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE FONTNAME[K]:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE FONTAREA[K]:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>255)THEN GOTO 6666 ELSE FONTBC[K]:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>255)THEN GOTO 6666 ELSE FONTEC[K]:=X;END;BEGIN GET(FMTFILE);
CHARBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
WIDTHBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
HEIGHTBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
DEPTHBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
ITALICBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
LIGKERNBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
KERNBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
EXTENBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
PARAMBASE[K]:=FMTFILE↑.INT;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;
END;IF(X<0)OR(X>25000)THEN GOTO 6666 ELSE FONTGLUE[K]:=X;END;END;
{1245}BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>307)THEN GOTO 6666 ELSE HYPHCOUNT:=X;END;
FOR K:=1 TO HYPHCOUNT DO BEGIN BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;
END;IF(X<0)OR(X>307)THEN GOTO 6666 ELSE J:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE HYPHWORD[J]:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>262143)THEN GOTO 6666 ELSE HYPHLIST[J]:=X;END;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;IF X<0 THEN GOTO 6666;
IF X>TRIESIZE THEN BEGIN WRITELN(TERMOUT,'---! Must increase the ',
'trie size');GOTO 6666;END ELSE TRIEMAX:=X;END;
FOR K:=0 TO TRIEMAX DO BEGIN GET(FMTFILE);TRIE[K]:=FMTFILE↑.HH;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>511)THEN GOTO 6666 ELSE TRIEOPPTR:=X;END;
FOR K:=1 TO TRIEOPPTR DO BEGIN BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;
END;IF(X<0)OR(X>63)THEN GOTO 6666 ELSE HYFDISTANCE[K]:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>63)THEN GOTO 6666 ELSE HYFNUM[K]:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>511)THEN GOTO 6666 ELSE HYFNEXT[K]:=X;END;END;
{1247}BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>3)THEN GOTO 6666 ELSE INTERACTION:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE FORMATIDENT:=X;END;
BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<>69069)OR EOF(FMTFILE)THEN GOTO 6666;LOADFMTFILE:=TRUE;GOTO 10;
6666:WRITELN(TERMOUT,'(Fatal format file error; I''m stymied)');
LOADFMTFILE:=FALSE;10:END;{1250}{1254}PROCEDURE CLOSEFILESAN;
VAR K:INTEGER;
BEGIN{1287}FOR K:=0 TO 15 DO IF WRITEOPEN[K]THEN ACLOSE(WRITEFILE[K]);
IF EQTB[3879].INT<>0 THEN{1255}BEGIN PRINTNL(1078);PRINTLN;
PRINTINT(STRPTR);PRINT(1064);PRINTINT(POOLPTR);PRINTNL(1077);
PRINTINT(MAXSTRINGS);PRINTCHAR(32);PRINTINT(POOLSIZE);PRINTNL(1079);
PRINTINT(MAXVARUSED);PRINTCHAR(38);PRINTINT(MEMEND-24999);PRINTNL(1077);
PRINTINT(25000);PRINTCHAR(38);PRINTINT(MEMMAX-24999);PRINTLN;
PRINTINT(CSCOUNT);PRINT(1066);PRINTNL(1077);PRINTINT(2100);PRINTLN;
PRINTINT(FMEMPTR);PRINT(1067);PRINTINT(FONTPTR-0);PRINT(1080);
IF FONTPTR<>1 THEN PRINTCHAR(115);PRINTNL(1077);PRINTINT(FONTMEMSIZE);
PRINTCHAR(32);PRINTINT(FONTMAX-0);PRINTLN;PRINTINT(HYPHCOUNT);
PRINT(1070);IF HYPHCOUNT<>1 THEN PRINTCHAR(115);PRINTNL(1077);
PRINTINT(307);PRINTNL(1081);PRINTINT(MAXINSTACK);PRINT(1082);
PRINTINT(MAXNESTSTACK);PRINT(1083);PRINTINT(MAXPARAMSTAC);PRINT(1084);
PRINTINT(MAXBUFSTACK+1);PRINT(1085);PRINTINT(MAXSAVESTACK+6);
PRINTCHAR(115);PRINTNL(1077);PRINTINT(STACKSIZE);PRINT(1082);
PRINTINT(NESTSIZE);PRINT(1083);PRINTINT(PARAMSIZE);PRINT(1084);
PRINTINT(BUFSIZE);PRINT(1085);PRINTINT(SAVESIZE);PRINTCHAR(115);END;
{598}IF TOTALPAGES=0 THEN PRINTNL(643)ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=
248;DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
DVIFOUR(LASTBOP);LASTBOP:=DVIOFFSET+DVIPTR-5;DVIFOUR(25400000);
DVIFOUR(473628672);PREPAREMAG;DVIFOUR(EQTB[3865].INT);DVIFOUR(MAXV);
DVIFOUR(MAXH);BEGIN DVIBUF[DVIPTR]:=MAXPUSH DIV 256;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=MAXPUSH MOD 256;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=TOTALPAGES DIV 256;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=TOTALPAGES MOD 256;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
{599}WHILE FONTPTR>0 DO BEGIN IF FONTUSED[FONTPTR]THEN DVIFONTDEF(
FONTPTR);FONTPTR:=FONTPTR-1;END;BEGIN DVIBUF[DVIPTR]:=249;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(LASTBOP);
BEGIN DVIBUF[DVIPTR]:=2;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;K:=4+((DVIBUFSIZE-DVIPTR)MOD 4);
WHILE K>0 DO BEGIN BEGIN DVIBUF[DVIPTR]:=223;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;K:=K-1;END;
{555}IF DVILIMIT=HALFBUF THEN WRITEDVI(HALFBUF,DVIBUFSIZE-1);
IF DVIPTR>0 THEN WRITEDVI(0,DVIPTR-1);PRINTNL(644);PRINT(OUTPUTFILENA);
PRINT(152);PRINTINT(TOTALPAGES);PRINT(645);
IF TOTALPAGES<>1 THEN PRINTCHAR(115);PRINT(646);
PRINTINT(DVIOFFSET+DVIPTR);PRINT(647);BCLOSE(DVIFILE);
IF PSEUDOTYPEIN=0 THEN BEGIN K:=SELECTOR;SELECTOR:=21;
POOLPTR:=STRSTART[STRPTR];PRINT(648);PRINT(OUTPUTFILENA);SELECTOR:=K;
BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE);END;
PSEUDOTYPEIN:=MAKESTRING;END;END;
IF JOBNAME>0 THEN BEGIN WRITELN(LOGFILE);ACLOSE(LOGFILE);END;
IF(PSEUDOTYPEIN<>0)AND(INTERACTION>0)THEN BEGIN WRITELN(TERMOUT);
FOR K:=STRSTART[PSEUDOTYPEIN]TO STRSTART[PSEUDOTYPEIN+1]-1 DO PTWR1W(0,
ORD(XCHR[STRPOOL[K]]));;END;END;{1256}PROCEDURE FINALCLEANUP;LABEL 10;
VAR C:SMALLNUMBER;K:SMALLNUMBER;T:INTEGER;BEGIN C:=CURCHR;
IF JOBNAME=0 THEN OPENLOGFILE;IF CURLEVEL>1 THEN BEGIN PRINTNL(1086);
PRINTINT(CURLEVEL-1);PRINTCHAR(41);END;
IF CONDPTR<>0 THEN BEGIN PRINTNL(1087);PRINTCMDCHR(95,CURIF);
PRINT(1088);END;IF C=1 THEN BEGIN{STOREFMTFILE;GOTO 10;}PRINTNL(1089);
GOTO 10;END;10:END;{1257}{PROCEDURE INITPRIM;BEGIN NONEWCONTROL:=FALSE;
[220]PRIMITIVE(237,72,0);PRIMITIVE(238,72,1);PRIMITIVE(239,72,2);
PRIMITIVE(240,72,3);PRIMITIVE(241,72,4);PRIMITIVE(242,72,5);
PRIMITIVE(243,72,6);PRIMITIVE(244,72,7);PRIMITIVE(245,72,8);
PRIMITIVE(246,72,9);PRIMITIVE(247,72,10);PRIMITIVE(248,72,11);
PRIMITIVE(249,72,12);PRIMITIVE(250,72,13);PRIMITIVE(251,72,14);
PRIMITIVE(252,72,15);PRIMITIVE(253,72,16);[223]PRIMITIVE(255,69,2898);
PRIMITIVE(256,69,2899);PRIMITIVE(257,69,2900);PRIMITIVE(258,69,2901);
PRIMITIVE(259,69,2902);[228]PRIMITIVE(260,70,0);PRIMITIVE(261,70,1);
PRIMITIVE(262,70,2);PRIMITIVE(263,70,3);PRIMITIVE(264,70,4);
PRIMITIVE(265,70,5);PRIMITIVE(266,70,6);PRIMITIVE(267,70,7);
PRIMITIVE(268,70,8);PRIMITIVE(269,70,9);PRIMITIVE(270,70,10);
PRIMITIVE(271,70,11);PRIMITIVE(272,70,12);PRIMITIVE(273,70,13);
PRIMITIVE(274,70,14);PRIMITIVE(275,70,15);PRIMITIVE(276,70,16);
PRIMITIVE(277,70,17);PRIMITIVE(278,70,18);PRIMITIVE(279,70,19);
PRIMITIVE(280,70,20);PRIMITIVE(281,70,21);PRIMITIVE(282,70,22);
PRIMITIVE(283,70,23);PRIMITIVE(284,70,24);PRIMITIVE(285,70,25);
PRIMITIVE(286,70,26);PRIMITIVE(287,70,27);PRIMITIVE(288,70,28);
PRIMITIVE(289,70,29);PRIMITIVE(290,70,30);PRIMITIVE(291,70,31);
PRIMITIVE(292,70,32);PRIMITIVE(293,70,33);PRIMITIVE(294,70,34);
PRIMITIVE(295,70,35);PRIMITIVE(296,70,36);PRIMITIVE(297,70,37);
[235]PRIMITIVE(299,71,0);PRIMITIVE(300,71,1);PRIMITIVE(301,71,2);
PRIMITIVE(302,71,3);PRIMITIVE(303,71,4);PRIMITIVE(304,71,5);
PRIMITIVE(305,71,6);PRIMITIVE(306,71,7);PRIMITIVE(307,71,8);
PRIMITIVE(308,71,9);PRIMITIVE(309,71,10);PRIMITIVE(310,71,11);
PRIMITIVE(311,71,12);PRIMITIVE(312,71,13);PRIMITIVE(313,71,14);
PRIMITIVE(314,71,15);PRIMITIVE(315,71,16);PRIMITIVE(316,71,17);
[250]PRIMITIVE(32,62,0);PRIMITIVE(47,43,0);PRIMITIVE(323,44,0);
PRIMITIVE(324,16,0);PRIMITIVE(325,97,0);PRIMITIVE(326,15,0);
PRIMITIVE(327,68,0);PRIMITIVE(328,94,0);PRIMITIVE(329,78,0);
PRIMITIVE(330,84,0);PRIMITIVE(331,59,0);PRIMITIVE(332,60,0);
HASH[2360].RH:=332;EQTB[2360]:=EQTB[CURVAL];PRIMITIVE(333,33,0);
PRIMITIVE(334,37,0);PRIMITIVE(335,40,0);PRIMITIVE(336,20,0);
PRIMITIVE(198,38,0);PRIMITIVE(337,66,0);PRIMITIVE(338,50,0);
PRIMITIVE(215,19,0);PRIMITIVE(339,45,0);PRIMITIVE(340,17,0);
PRIMITIVE(341,81,0);PRIMITIVE(342,35,0);PRIMITIVE(201,53,0);
PRIMITIVE(343,61,0);PRIMITIVE(344,90,0);PRIMITIVE(345,41,0);
PRIMITIVE(346,63,0);PRIMITIVE(347,82,0);PRIMITIVE(348,0,256);
PRIMITIVE(349,89,0);PRIMITIVE(350,73,0);PRIMITIVE(351,25,0);
PRIMITIVE(352,26,0);PRIMITIVE(216,39,0);PRIMITIVE(353,34,0);
PRIMITIVE(354,54,0);PRIMITIVE(355,36,0);[315]PRIMITIVE(409,13,0);
PARLOC:=CURVAL;PARTOKEN:=4096+PARLOC;[357]PRIMITIVE(443,99,0);
PRIMITIVE(444,99,1);PRIMITIVE(445,99,2);PRIMITIVE(446,99,3);
PRIMITIVE(447,99,4);[381]PRIMITIVE(474,65,0);PRIMITIVE(475,65,1);
PRIMITIVE(476,65,2);PRIMITIVE(477,65,3);PRIMITIVE(478,74,18);
PRIMITIVE(479,64,0);PRIMITIVE(480,64,1);[386]PRIMITIVE(483,67,94);
PRIMITIVE(484,67,1);[434]PRIMITIVE(553,98,0);PRIMITIVE(554,98,1);
[449]PRIMITIVE(567,95,0);PRIMITIVE(568,95,1);PRIMITIVE(569,95,2);
PRIMITIVE(570,95,3);PRIMITIVE(571,95,4);PRIMITIVE(572,95,5);
PRIMITIVE(573,95,6);PRIMITIVE(574,95,7);PRIMITIVE(575,95,8);
PRIMITIVE(576,95,9);PRIMITIVE(577,95,10);PRIMITIVE(578,95,11);
PRIMITIVE(579,95,12);[453]PRIMITIVE(580,96,1);HASH[2362].RH:=580;
EQTB[2362]:=EQTB[CURVAL];PRIMITIVE(581,96,3);PRIMITIVE(582,96,2);
[725]PRIMITIVE(373,4,128);PRIMITIVE(375,5,129);HASH[2359].RH:=375;
EQTB[2359]:=EQTB[CURVAL];HASH[2363].RH:=706;HASH[2364].RH:=706;
EQTB[2364].HH.B0:=9;EQTB[2364].HH.RH:=25011;EQTB[2364].HH.B1:=1;
EQTB[2363]:=EQTB[2364];EQTB[2363].HH.B0:=104;EQTB[2363].HH.RH:=25011;
[986]PRIMITIVE(806,14,0);PRIMITIVE(807,14,1);[994]PRIMITIVE(809,27,4);
PRIMITIVE(810,27,0);PRIMITIVE(811,27,1);PRIMITIVE(812,27,2);
PRIMITIVE(813,27,3);PRIMITIVE(814,28,4);PRIMITIVE(815,28,0);
PRIMITIVE(816,28,1);PRIMITIVE(817,28,2);PRIMITIVE(818,28,3);
PRIMITIVE(202,29,5);PRIMITIVE(205,30,0);PRIMITIVE(206,31,99);
[1006]PRIMITIVE(838,23,1);PRIMITIVE(839,23,0);PRIMITIVE(840,24,1);
PRIMITIVE(841,24,0);PRIMITIVE(842,22,0);PRIMITIVE(843,22,1);
PRIMITIVE(844,22,2);PRIMITIVE(845,22,3);PRIMITIVE(846,22,4);
PRIMITIVE(847,22,5);PRIMITIVE(848,22,98);PRIMITIVE(849,32,99);
PRIMITIVE(850,32,100);PRIMITIVE(851,32,101);PRIMITIVE(852,32,102);
[1024]PRIMITIVE(866,42,1);PRIMITIVE(867,42,0);[1050]PRIMITIVE(45,46,1);
PRIMITIVE(213,46,0);[1080]PRIMITIVE(910,47,0);PRIMITIVE(911,47,1);
[1094]PRIMITIVE(672,49,15);PRIMITIVE(673,49,16);PRIMITIVE(674,49,17);
PRIMITIVE(675,49,18);PRIMITIVE(676,49,19);PRIMITIVE(677,49,20);
PRIMITIVE(678,49,21);PRIMITIVE(681,49,25);PRIMITIVE(680,49,26);
[1106]PRIMITIVE(667,52,0);PRIMITIVE(668,52,2);PRIMITIVE(669,52,4);
PRIMITIVE(670,52,6);[1113]PRIMITIVE(928,51,0);PRIMITIVE(929,51,1);
PRIMITIVE(930,51,2);PRIMITIVE(931,51,3);PRIMITIVE(932,51,4);
PRIMITIVE(933,51,5);[1122]PRIMITIVE(682,48,29);PRIMITIVE(683,48,30);
HASH[2361].RH:=683;EQTB[2361]:=EQTB[CURVAL];[1142]PRIMITIVE(953,79,1);
PRIMITIVE(954,79,2);PRIMITIVE(955,79,4);PRIMITIVE(956,83,0);
PRIMITIVE(957,83,1);PRIMITIVE(958,83,2);PRIMITIVE(959,83,3);
[1153]PRIMITIVE(972,80,0);PRIMITIVE(973,80,1);
[1162]PRIMITIVE(976,75,3209);PRIMITIVE(977,75,3337);
PRIMITIVE(978,75,3465);PRIMITIVE(979,75,3593);PRIMITIVE(980,75,3721);
PRIMITIVE(981,75,4143);PRIMITIVE(689,76,3160);PRIMITIVE(690,76,3176);
PRIMITIVE(691,76,3192);[1167]PRIMITIVE(986,85,0);PRIMITIVE(987,85,1);
PRIMITIVE(988,85,2);PRIMITIVE(989,85,3);PRIMITIVE(990,86,0);
PRIMITIVE(991,86,1);PRIMITIVE(992,86,2);PRIMITIVE(993,86,3);
PRIMITIVE(994,87,0);PRIMITIVE(995,87,1);PRIMITIVE(996,87,2);
PRIMITIVE(997,87,3);PRIMITIVE(998,88,0);PRIMITIVE(999,88,1);
PRIMITIVE(1000,88,2);PRIMITIVE(1001,88,3);[1178]PRIMITIVE(1013,91,0);
PRIMITIVE(1014,91,1);[1188]PRIMITIVE(1025,92,0);PRIMITIVE(1026,92,1);
PRIMITIVE(1027,92,2);PRIMITIVE(1028,92,3);[1193]PRIMITIVE(1029,58,1);
PRIMITIVE(1030,58,0);[1198]PRIMITIVE(1031,56,0);PRIMITIVE(1032,56,1);
[1206]PRIMITIVE(1038,55,3465);PRIMITIVE(1039,55,3593);
[1211]PRIMITIVE(1040,21,0);PRIMITIVE(1041,21,1);PRIMITIVE(1042,21,2);
PRIMITIVE(1043,21,3);[1265]PRIMITIVE(1090,57,0);PRIMITIVE(1091,57,1);
WRITELOC:=CURVAL;PRIMITIVE(1092,57,2);PRIMITIVE(1093,57,3);
PRIMITIVE(1094,57,4);;NONEWCONTROL:=TRUE;END;
}{1259}{PROCEDURE DEBUGHELP;LABEL 889,888,10;VAR K,L,M,N:INTEGER;
BEGIN GOTO 889;888:['*************breakpoint*************';
'***********for**debugging***********'];
889:WHILE TRUE DO BEGIN PRINTNL(35);BREAK(TERMOUT);READ(TERMIN,M);
IF M<0 THEN GOTO 10;IF M=0 THEN GOTO 888;READ(TERMIN,N);
CASE M OF[1260]1:PRINTMEMORYW(MEM[N]);2:PRINTINT(MEM[N].HH.LH);
3:PRINTINT(MEM[N].HH.RH);4:PRINTMEMORYW(EQTB[N]);
5:PRINTMEMORYW(FONTINFO[N]);6:PRINTMEMORYW(SAVESTACK[N]);7:SHOWBOX(N);
8:BEGIN BREADTHMAX:=10000;DEPTHTHRESHO:=POOLSIZE-POOLPTR-10;
SHOWNODELIST(N);END;9:SHOWTOKENLIS(N,0,1000);10:PRINT(N);
11:CHECKMEM(N>0);12:SEARCHMEM(N);13:BEGIN READ(TERMIN,L);
PRINTCMDCHR(N,L);END;14:FOR K:=0 TO N DO PRINT(BUFFER[K]);
15:BEGIN FONTINSHORTD:=0;SHORTDISPLAY(N);END;OTHERS:PRINT(63)END;END;
10:END;}{1298}FUNCTION TEXPHN:BOOLEAN;EXTERN;PROCEDURE TEXCHK;EXTERN;
{1302}PROCEDURE MAGIC;LABEL 10;TYPE BITS=0..35;VAR NUMCOUNTS:INTEGER;
JOBHRL:INTEGER;JUNK,I,J:INTEGER;SUCCESS:BOOLEAN;
HACK,MEMRY:PACKED RECORD CASE INTEGER OF 0:(XX:HALFWORD;P:↑INTEGER);
1:(Z:INTEGER);2:(LH:HALFWORD;RH:HALFWORD);
3:(SIXBIT:PACKED ARRAY[1..6]OF 0..63);4:(B:SET OF BITS)END;
BEGIN IF NOT TEXPHN THEN GOTO 10;{1303}HACK.Z:=77;HACK.Z:=HACK.P↑;
JOBHRL:=HACK.RH;{1304}NUMCOUNTS:=0;MEMRY.Z:=131073;
WHILE MEMRY.Z<JOBHRL DO BEGIN HACK.Z:=MEMRY.P↑;
IF(HACK.LH=120832)AND(HACK.RH=MEMRY.Z+1)THEN BEGIN MEMRY.Z:=MEMRY.Z+1;
MEM[NUMCOUNTS].INT:=MEMRY.Z;NUMCOUNTS:=NUMCOUNTS+1;END;
MEMRY.Z:=MEMRY.Z+1;END;{1305}RESET(COUNTFILE,COUNTNAME,'/O');
IF NOT EOF(COUNTFILE)THEN BEGIN READLN(COUNTFILE,I);
IF I=NUMCOUNTS THEN FOR I:=0 TO NUMCOUNTS-1 DO BEGIN MEMRY.Z:=MEM[I].INT
;READLN(COUNTFILE,MEMRY.P↑);END;END;CLOSE(COUNTFILE);
{1306}WHILE TRUE DO BEGIN FOR I:=1 TO WRITEDELAY DO BEGIN FOR J:=1 TO
CHECKDELAY DO CALLI(25,,60,JUNK,SUCCESS);TEXCHK;END;
REWRITE(COUNTFILE,COUNTNAME);WRITELN(COUNTFILE,NUMCOUNTS);
FOR I:=0 TO NUMCOUNTS-1 DO BEGIN MEMRY.Z:=MEM[I].INT;
WRITELN(COUNTFILE,MEMRY.P↑:0);END;CLOSE(COUNTFILE);END;10:END;
{1253}BEGIN REWRITE(TERMOUT,'TTY:','/O');
IF READYALREADY=314159 THEN GOTO 1;INITIALIZE;{14}BAD:=0;
IF(HALFERRORLIN<30)OR(HALFERRORLIN>ERRORLINE-15)THEN BAD:=1;
IF MAXPRINTLINE<60 THEN BAD:=2;IF DVIBUFSIZE MOD 8<>0 THEN BAD:=3;
IF(25000<100)OR(25100>MEMMAX)THEN BAD:=4;IF 1777>2100 THEN BAD:=5;
{108}IF(0>0)OR(511<127)THEN BAD:=11;IF(0>0)OR(262143<32767)THEN BAD:=12;
IF(0<0)OR(511>262143)THEN BAD:=13;IF(0<0)OR(MEMMAX>=262143)THEN BAD:=14;
IF(0<0)OR(FONTMAX>511)THEN BAD:=15;IF FONTMAX>256 THEN BAD:=16;
IF(SAVESIZE>262143)OR(MAXSTRINGS>262143)THEN BAD:=17;
IF(BUFSIZE>262143)THEN BAD:=18;{273}IF 6463>262143 THEN BAD:=21;
{481}IF 18>FILENAMESIZE THEN BAD:=31;
{1177}IF 2*262143<25000 THEN BAD:=41;IF BAD>0 THEN BEGIN WRITE(TERMOUT,
'Ouch---my internal constants have been clobbered!');
WRITE(TERMOUT,'---case ',BAD:0);GOTO 9999;END;
{IF NOT INITSTRINGS THEN GOTO 9999;INITPRIM;}1:{55}SELECTOR:=17;
TALLY:=0;TERMOFFSET:=0;FILEOFFSET:=0;
{60}WRITE(TERMOUT,'This is TeX, WAITS Version 0.9');
IF FORMATIDENT=0 THEN WRITELN(TERMOUT,' (no format preloaded)')ELSE
BEGIN PRINT(FORMATIDENT);PRINTLN;END;{487}JOBNAME:=0;
{492}OUTPUTFILENA:=0;{1301}MAGIC;;{1258}BEGIN{312}BEGIN INPUTPTR:=0;
MAXINSTACK:=0;INOPEN:=0;MAXBUFSTACK:=0;PARAMPTR:=0;MAXPARAMSTAC:=0;
SCANNERSTATU:=0;FIRST:=0;CURINPUT.STATEFIELD:=33;CURINPUT.STARTFIELD:=0;
CURINPUT.INDEXFIELD:=0;LINE:=0;CURINPUT.NAMEFIELD:=0;
ALIGNSTATE:=1000000;IF NOT INITTERMINAL THEN GOTO 9999;
CURINPUT.LIMITFIELD:=LAST;FIRST:=LAST+1;END;
IF(FORMATIDENT=0)OR(BUFFER[CURINPUT.LOCFIELD]=38)THEN BEGIN IF
FORMATIDENT<>0 THEN INITIALIZE;IF NOT OPENFMTFILE THEN GOTO 9999;
IF NOT LOADFMTFILE THEN BEGIN WCLOSE(FMTFILE);GOTO 9999;END;
WCLOSE(FMTFILE);
WHILE(CURINPUT.LOCFIELD<CURINPUT.LIMITFIELD)AND(BUFFER[CURINPUT.LOCFIELD
]=32)DO CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;END;
BUFFER[CURINPUT.LIMITFIELD]:=13;FIXDATEANDTI;
{710}MAGICOFFSET:=STRSTART[700]-9*15;
{74}IF INTERACTION=0 THEN SELECTOR:=16 ELSE SELECTOR:=17;
IF(CURINPUT.LOCFIELD<CURINPUT.LIMITFIELD)AND(EQTB[3209+BUFFER[CURINPUT.
LOCFIELD]].HH.RH<>0)THEN STARTINPUT;END;MAINCONTROL;FINALCLEANUP;
9998:CLOSEFILESAN;9999:READYALREADY:=0;END.